目录中最多2个文件,使用If语句检查

时间:2016-11-28 19:41:20

标签: powershell

作为对我上一个问题(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个。

提前谢谢。

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