14
對於像-WhatIf這樣的事物,我們通過[CmdletBinding]屬性給我們$ PSCmdlet.ShouldProcess()。是否有其他用於實現常見命令行參數的工具或實踐,如-Verbose,-Debug,-PassThru等?Powershell:如何實現標準交換機?
對於像-WhatIf這樣的事物,我們通過[CmdletBinding]屬性給我們$ PSCmdlet.ShouldProcess()。是否有其他用於實現常見命令行參數的工具或實踐,如-Verbose,-Debug,-PassThru等?Powershell:如何實現標準交換機?
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
瞭解更多信息。
我想你可能想要存儲輸入變量,做一些然後通過存儲的變量在最後(如果$ passthru)。 – Matt
是的,'PassTest'不是一個有用的功能;只是一個簡單的例子來說明如何實現'-PassThru'。另外,你也可能會對輸入變量做些什麼,但是可以通過原來的值不變(例如'$ _。Kill(); if($ PassThru){$ _}')。我添加了一個使用PassThru參數設置另一個命令的PassThru的非trival示例。 – Rynant