我正在编写一个PowerShell脚本,以查找带有Get-ChildItem
的目录并将它们传递给sdelete
。我想试运行它。我不认为sdelete
具有-WhatIf
标志。有什么办法可以实现类似的目标吗?
最佳答案
您可以通过在函数顶部的CmdletBinding语句中添加-WhatIf
和在代码中添加-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
变量的默认级别为“高”。关于windows - 如何使用whatif标志运行sdelete,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44883450/