2017-07-03 58 views
2

我正在編寫一個PowerShell腳本,它查找Get-ChildItem的目錄並將它們傳遞給sdelete。我想試運行它。我不認爲sdelete有一個-WhatIf標誌。有什麼辦法可以達到類似的目的嗎?如何使用whatif標誌運行sdelete

回答

4

您可以通過在你的函數的頂部和if ($pscmdlet.ShouldProcess(something) { }塊到你的代碼添加SupportShouldProcess到CmdletBinding語句和落實-WhatIf-Confirm功能。

例如:

Function Remove-WithSDelete { 
    [CmdletBinding(SupportsShouldProcess,ConfirmImpact="High")] 
    Param ($File) 

    Process { 
    if ($pscmdlet.ShouldProcess($File)) { 
     & sdelete.exe $File 
    } 
    } 
} 

用法:

PS C:\> Remove-WithSDelete c:\temp -WhatIf 
What if: Performing the operation "Remove-WithSDelete" on target "c:\temp". 

ConfirmImpact部分是可選的,被用於定義在該-Confirm自動調用的水平。如果函數的影響級別等於或大於$ConfirmPreference級別,則-Confirm將成爲默認行爲(不顯式調用它,可以通過執行-Confirm:$false強制執行)。如果省略它,默認情況下,功能確認級別爲「中」。 $ConfirmPreference變量的默認級別爲「高」。

+0

通過'Remove-item ... -WhatIf'解決方法中途暫停回答以嘗試此操作。奇蹟般有效。 – gms0ulman

相關問題