これにぴったりのタイトルを考えるのに苦労しました。モッズの方は、もっといいタイトルが思いついたら自由に編集してください。
パワーシェル 3。
サンプル関数は次のとおりです。
Function New-Cmdlet
{
[CmdletBinding(SupportsShouldProcess=$True)]
Param([Parameter(Mandatory=$True,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
[String[]]$ComputerName)
BEGIN
{
Write-Verbose -Message "Cmdlet is starting."
}
PROCESS
{
Write-Verbose -Message "Beginning Process block on $ComputerName"
}
END
{
Write-Verbose -Message "Running End block."
}
}
を実行するGet-Content C:\hosts.txt | New-Cmdlet
と、hosts.txt で見つかったエントリごとに PROCESS ブロックが 1 回実行されます。これは良いことであり、正しいことです。
を実行する"host1","host2" | New-Cmdlet
と、PROCESS ブロックが 2 回実行されます。ホスト 1 に対して 1 回、ホスト 2 に対してもう一度。繰り返しますが、それは良いことであり、正しいことです。
しかし、私が実行したNew-Cmdlet -ComputerName "host1","host2"
場合、または私が考えることができる他のバリアントについてはNew-Cmdlet -ComputerName @("host1","host2")
... PROCESS ブロックは一度だけ実行されます。 これは悪いことです。
各シナリオでこれを適切に機能させるために何ができるか考えていますか?