检查多个NAS目录中的PowerShell文件夹



我有一个NAS文件夹列表,必须定期查询文件夹是否存在。每个查询都是唯一的,但可能位于40多个目录中的任何一个目录下。目录是固定的,我只是在寻找一个true或null(对所有目录)响应。我需要一个用户输入框和一个txt文件的输出,或者一个经过验证的UNC路径的弹出对话框。PowerShell有有用的测试路径、读取主机和获取内容功能,我想我会使用这些功能,但我对其他想法持开放态度。这是我最初的想法,任何帮助都将不胜感激。

我的变量

    $Folderquery = Read-Host 'Enter remote folder name'
    $potentialpaths = Get-Content \naslistofpaths.txt

当我存储单个变量$Folderquery并针对每个可能的UNC路径运行它时,我的命令就起作用了

    Test-Path \NAS1Folder1$Folderquery

我想我需要在paths.txt文件的列表中列出所有可能的UNC测试路径,因为每个NAS都有几百个主文件夹,我只想扫描其中的一小段。

    Foreach ($potentialpaths in (Get-Content \NASlistofpaths.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 \NASlistofpaths.txt))
{
  If (Test-Path "$potentialpath$Folderquery") 
  {
    $i++
  }
}
If ($i -eq 1)
{
  Write-Output "The Folder $Folderquery exists on $potentialpath$Folderquery" | Out-File "\NASpathlogfile.log" -Encoding ASCII -Append
} 
Elseif ($i -eq 0)
{
  Write-Output "The Folder $Folderquery does not exist" | Out-File "\NASpathlogfile.log" -Encoding ASCII -Append
}    

我应该在哪里休息?如何将这些陈述分组以使其有效?

看起来你已经非常接近你的答案了,这就是你想要的吗?

$Folderquery = Read-Host 'Enter remote folder name'
$i = 0
Foreach ($potentialpath in (Get-Content \NASlistofpaths.txt))
{
  If (Test-Path "$potentialpath$Folderquery") 
  {
    $i++
  }
}
If ($i -eq 0)
{
  Write-Output "The Folder $Folderquery does not exist" | Out-File "C:logfile.log" -Encoding ASCII -Append
}

我认为问题是在循环之外打印文件夹存在消息,此时$potentialpaths(名称应该是单数而不是复数)的值与循环最后一次迭代时的值相同。从if(Test Path)块内部打印该消息,并根据较大的上下文中断/返回/退出,并且给定$Folderquery的实例为零或一个,或者至少您只对第一个感兴趣。

最新更新