作为对我上一个问题(Check for File in multiple directories with an IF statement Powershell)的回复,我仍然留下一个问题,我将首先展示代码:
$VM_NAME= "Machine"
$VM_NAME2="$VM_NAME 2"
$search=Get-ChildItem -Path C:\Map\* -include $VM_NAME,$VM_NAME2 -filter *.vhdx -Recurse
if ($search.Name -contains $VM_NAME.vhdx -and $search.Name -contains $VM_NAME2.vhdx) {write-host "True" exit} else {write-host "False"}
这段代码给了我一个True,即使我删除了1个文件,我怎样才能确保它变为false,以便脚本继续而不是退出。 这样做的目的是确保在人们运行脚本时创建的网页上创建的文件超过2个。
提前谢谢。
答案 0 :(得分:0)
您正在将.Name
的{{1}}属性与$search
的属性.vhdx
进行比较,第二个属性不存在。您只需要格式化比较,以便将$VM_Name
与表示vm名称的字符串进行比较,后跟' .vhdx'像这样$search.Name
对$ VM_Name2
答案 1 :(得分:0)
像这样修改
$VM_NAME= "res"
$VM_NAME2="$VM_NAME 2"
# -> if contains $VM_NAME2="$VM_NAME 2" then it contains $VM_NAME
# -> test BaseName = test whitout extension
$search=(gci C:\Map\* -File -filter *.vhdx -Recurse | select @{N="Val";E={$_.BaseName -like "*$VM_NAME2*" }} ).Val
$search -contains $true