查找特定文件并将其删除(如果存在)



我正在使用几个变量,但通常我使用从Get-ChildItemcmdlet返回的对象来查找文件并使用更改的if语句。

但是,如何在目录中找到特定文件,如果找到它,则将其删除?这是我制作的代码:

$VM_NAME="Test"
$search=Get-ChildItem -Path B:VirtualserversDisksUsers* -include $VM_NAME.vhdx -filter *.vhdx -Recurse 
if ($search.Name -contains "$VM_NAME.vhdx") {remove-item ??? }
else {write-host "Continue.."}

只需将Get-ChildItem结果通过管道传输到Remove-Itemcmdlet:

Get-ChildItem -Path B:VirtualserversDisksUsers* -include $VM_NAME.vhdx -filter *.vhdx -Recurse | 
Remove-Item -Force

如果未找到文件,这也将起作用。

删除项目有这个选项,就这样做

$VM_NAME="Test"
remove-item B:VirtualserversDisksUsers* -Recurse -include "$VM_NAME.vhdx" 

因此,与其使用 If 语句,不如使用Where-Object代码的下半部分类似于

$search.Name | Where-Object {$_ -like "*$VM_NAME.vhdx*"} | Remove-Item

您可以使用 -eq 并删除"*"而不是 -like 如果 $VM_NAME.vhdx 与您的文件名完全匹配。

最新更新