对于像 -WhatIf 这样的事情,我们有 $PSCmdlet.ShouldProcess() 由 [CmdletBinding] 属性提供给我们。是否还有其他此类工具或实践可用于实现常见的命令行参数,例如 -Verbose、-Debug、-PassThru 等?
问问题
2147 次
1 回答
16
Write-Debug
并自动Write-Verbose
处理-Debug
和-Verbose
参数。
-PassThru
在技术上不是一个通用参数,但您可以像这样实现它:
function PassTest {
param(
[switch] $PassThru
)
process {
if($PassThru) {$_}
}
}
1..10|PassTest -PassThru
这是在 cmdlet 上使用函数的 PassThru 值的示例:
function Add-ScriptProperty {
param(
[string] $Name,
[ScriptBlock] $Value,
[switch] $PassThru
)
process{
# Use ":" to explicitly set the value on a switch parameter
$_| Add-Member -MemberType ScriptProperty -Name $Name -Value $Value `
-PassThru:$PassThru
}
}
$calc = Start-Process calc -PassThru|
Add-ScriptProperty -Name SecondsOld `
-Value {((Get-Date)-$this.StartTime).TotalSeconds} -PassThru
sleep 5
$calc.SecondsOld
查看Get-Help about_CommonParameters
更多信息。
于 2011-08-03T20:48:29.107 回答