我需要檢查網絡共享上多個文件夾中是否存在文件,並返回文件所在文件夾的名稱。我是新來的PowerShell所以到目前爲止,我可以用這條線一個文件夾中檢查該文件是否存在網絡共享:PowerShell:使用測試路徑檢查網絡共享上多個文件夾中是否存在文件
test-path \\networkshare\folder\file.txt
我如何去構建出這個代碼,以檢查共享上的其他四個文件夾中是否存在該文件,並返回文件所在文件夾的名稱?
提前感謝您的時間。
我需要檢查網絡共享上多個文件夾中是否存在文件,並返回文件所在文件夾的名稱。我是新來的PowerShell所以到目前爲止,我可以用這條線一個文件夾中檢查該文件是否存在網絡共享:PowerShell:使用測試路徑檢查網絡共享上多個文件夾中是否存在文件
test-path \\networkshare\folder\file.txt
我如何去構建出這個代碼,以檢查共享上的其他四個文件夾中是否存在該文件,並返回文件所在文件夾的名稱?
提前感謝您的時間。
像這樣?
[string]$FileName = "file.txt"
$Directories = @("\\networkshare\folder", "\\networkshare\folder2", "\\networkshare\folder3")
$Directories | %{
If (Test-Path ($_ + "\" + $FileName))
{ Write-Host $_ }
}
更改寫主機無論您需要用該文件夾名稱做什麼。
這是Join-Path
存在的原因之一。我們可以用它來爲我們建立路徑。
$fileToLocate = "1.log"
$Directories = @("C:\temp", "\\networkshare\folder2", "\\networkshare\folder3")
Join-Path -Path $Directories -ChildPath $fileToLocate | Where-Object{Test-Path $_} | ForEach-Object{
Write-Host "$fileToLocate found in: $_" -ForegroundColor Green
}
在上述Join-Path -Path $Directories -ChildPath $fileToLocate
的例子將產生一個字符串數組,像這樣
C:\temp\1.log
\\networkshare\folder2\1.log
\\networkshare\folder3\1.log
然後,使用Test-Path
,以查看是否任何那些的存在。如果有的話,它會進入ForEach-Object
區塊,以便輸出到Write-Host
。
爲了我的理解,讓我們嘗試一些更簡單的方法。我想遍歷%directories數組,並根據文件的存在返回True/False。我試過這個:'$ Directories | {test-path $ Filename}',但是它對數組中的所有項返回False,儘管我知道該文件存在於兩個目錄中 – DBS 2014-10-10 19:39:46