フォルダーの存在を定期的に照会する必要がある NAS フォルダーのリストがあります。各クエリは一意ですが、40 以上のディレクトリのいずれかに存在する可能性があります。ディレクトリは固定されており、(すべてのディレクトリに対して) true または null の応答のみを探しています。ユーザー入力ボックスと、検証済みの UNC パスを含む txt ファイルまたはポップアップ ダイアログへの出力が必要です。PowerShell には便利な Test-Path、Read-Host、および Get-Content 関数があり、これらを使用すると思いますが、他のアイデアも自由です。これが私の最初の考えです。
私の変数
$Folderquery = Read-Host 'Enter remote folder name'
$potentialpaths = Get-Content \\nas\listofpaths.txt
単一の変数 $Folderquery を保存し、可能な各 UNC パスに対して実行するときに機能するコマンド
Test-Path \\NAS1\Folder1\$Folderquery
各 NAS には数百のプライマリ フォルダーがあり、それらの小さなサブセクション内でのみスキャンしたいので、考えられるすべての UNC テスト パスを listofpaths.txt ファイルに含める必要があると考えています。
Foreach ($potentialpaths in (Get-Content \\NAS\listofpaths.txt))
{
If (-not (Test-Path $Folderquery)) {
Write-Output "The Folder $Folderquery does not exist"
}
else {
Write-Output "The Folder $Folderquery has been found on $listofpaths
}
では、どうすればすべてをまとめることができますか?
改訂されたコード:
$Folderquery = Read-Host 'Enter remote folder name'
$i = 0
foreach ($potentialpath in (Get-Content \\NAS\listofpaths.txt))
{
If (Test-Path "$potentialpath\$Folderquery")
{
$i++
}
}
If ($i -eq 1)
{
Write-Output "The Folder $Folderquery exists on $potentialpath\$Folderquery" | Out-File "\\NAS\pathlogfile.log" -Encoding ASCII -Append
}
Elseif ($i -eq 0)
{
Write-Output "The Folder $Folderquery does not exist" | Out-File "\\NAS\pathlogfile.log" -Encoding ASCII -Append
}
どこを壊せばいいですか?これらのステートメントをグループ化して効果的にするにはどうすればよいですか?