我正在编写PowerShell脚本,找到包含Get-ChildItem
的目录并将其传递给sdelete
。我想试试吧。我不认为sdelete
有一个-WhatIf
标志。有什么方法可以实现类似的东西吗?
答案 0 :(得分:4)
您可以通过将-WhatIf
添加到函数顶部的CmdletBinding语句和-Confirm
块代码中来实现SupportShouldProcess
和if ($pscmdlet.ShouldProcess(something) { }
功能。
例如:
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
变量的默认级别为"高"。