使用IF语句Powershell检查多个目录中的File

时间:2016-11-28 16:58:55

标签: powershell directory get-childitem

我在PowerShell中遇到了一些问题。我希望能够让powershell命令搜索多个目录。 使用名称为“$ VM_DISK = VM_DISK.vhdx”之类的变量,并让powershell在该庄园中搜索,以便如果该文件存在于C:\ VM_DISK \等文件夹中,则退出脚本。 我已经尝试了“Get-Childitem”,但是当我将变量放入其中时它似乎不起作用。这是一个例子:

    $VM_DISK= "Example.vhdx"

    $search=Get-ChildItem -Path C:\VM_DISK\* -Filter $VM_DISK -Recurse 

    if ($search -eq $VM_DISK) {write-host "Goodbye!" exit}  else {write-host "Continue"}

我似乎无法弄清楚为什么这不起作用,希望有些人可以弄明白。

1 个答案:

答案 0 :(得分:0)

您需要更改if声明。

if ($search.Name -contains $VM_Disk)

通过这种方式,您可以将一个名称数组(您想要的,对象的名称,而不是对象)与特定对象的名称(基本上为string)进行比较。
这在你的情况下毫无意义,tbh。由于$search始终包含$VM_Disk,因此如果未找到任何内容,则为{null}。

因此,正确的测试方法是if ($search)(就像Mathias建议的那样)。哪个会测试是否有任何返回。这基本上等于你要做的事情。