2016-12-01 34 views
2

我使用了幾個變量,但通常我使用從Get-ChildItem cmdlet返回的對象來查找文件並使用已更改的if語句。查找特定文件並將其刪除(如果存在)

但是我怎樣才能找到目錄中的特定文件,如果它發現它然後刪除它?這是我做的代碼:

$VM_NAME="Test" 
$search=Get-ChildItem -Path B:\Virtualservers\Disks\Users\* -include $VM_NAME.vhdx -filter *.vhdx -Recurse 

if ($search.Name -contains "$VM_NAME.vhdx") {remove-item ??? } 
else {write-host "Continue.."} 

回答

3

只是Get-ChildItem結果爲Remove-Item的cmdlet:

Get-ChildItem -Path B:\Virtualservers\Disks\Users\* -include $VM_NAME.vhdx -filter *.vhdx -Recurse | 
    Remove-Item -Force 

如果沒有找到的文件,這也將正常工作。

+0

謝謝你,真的! –

1

因此而不是使用if語句要使用一個Where-Object代碼的下部會像

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

您可以使用當量和刪除「*」,而不是樣,如果$ VM_NAME.vhdx將完全匹配您的文件名。

+0

是不是因爲他使用具有'-filter'和'-include'參數的'Get-ChildItem' cmdlet而使Where-Object過時? –

+1

是的你的正確,馬丁的答案是更好的。 –

0

刪除項有這個選項,只是做

$VM_NAME="Test" 
remove-item B:\Virtualservers\Disks\Users\* -Recurse -include "$VM_NAME.vhdx" 
相關問題