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

Check for File in multiple directories with an IF statement Powershell

我在 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"}

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

您需要更改您的 if 声明。

if ($search.Name -contains $VM_Disk)

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

所以正确的测试方法是 if ($search)(正如 Mathias 所建议的)。这将测试是否返回任何内容。其中,基本上等于你正在尝试做的事情。