私は本の中でPowerShellを学んだことについて混乱しています。第21章では、パラメータバインディングやパイプライン経由で入力を受け付ける関数について、2つのパターンを示します。このPowershell関数のパイプラインとパラメータの入力を処理する
function someworkerfunction {
# do stuff
}
function Get-Work {
[CmdletBinding()]
param(
[Parameter(Mandatory=$True,
ValueFromPipelineByPropertyName=$True)]
[Alias('host')]
[string[]]$computername
)
BEGIN {}
PROCESS {
foreach($computer in $computername) {
someworkerfunction -comptuername $computer
}
}
END {}
}
等
function someworkerfunction {
# do some work
}
function Get-SomeWork {
param ([string[]]$computername)
BEGIN {
$usedParameter = $False
if($PSBoundParameters.ContainsKey('computername')) {
$usedParameter = $True
}
}
PROCESS {
if($usedParameter) {
foreach($computer in $computername) {
someworkerfunction -computername $comptuer
}
} else {
someworkerfunction -comptuername $_
}
}
END {}
}
秒を次のように
最初のIは、第二のサンプルは、標準のPowershell 2.0高度な機能を知っています。私の質問は、Powershell 2.0のcmdletbindingディレクティブのサポートで、これまでに最初のパターンを使用したいと思うでしょう。それはPowershell 1.0の単なる遺産ですか?基本的には、Powershell 2.0を使用しているときに、最初のパターンを混乱させたい時があります.2番目のパターンがとてもきれいです。
洞察力があれば幸いです。
ありがとうございます。
こんにちは。情報ありがとうございます。これは私が知りたかったものです。 – lowteq