我在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"}
我似乎无法弄清楚为什么这不起作用,希望有些人可以弄明白。
答案 0 :(得分:0)
您需要更改if
声明。
if ($search.Name -contains $VM_Disk)
通过这种方式,您可以将一个名称数组(您想要的,对象的名称,而不是对象)与特定对象的名称(基本上为string
)进行比较。
这在你的情况下毫无意义,tbh。由于$search
始终包含$VM_Disk
,因此如果未找到任何内容,则为{null}。
因此,正确的测试方法是if ($search)
(就像Mathias建议的那样)。哪个会测试是否有任何返回。这基本上等于你要做的事情。