很难为此想一个非常好的标题。如果您能想到更好的标题,请随时编辑它。
电源外壳 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 块。这是好的和正确的。
如果我运行"host1","host2" | New-Cmdlet
,则 PROCESS 块运行两次;一次用于主机 1,再次用于主机 2。同样,这是好的和正确的。
但是,如果我运行New-Cmdlet -ComputerName "host1","host2"
或我能想到的任何其他变体New-Cmdlet -ComputerName @("host1","host2")
...... PROCESS 块只运行一次。 哪个不好。
知道我可以做些什么来使其在每种情况下都能正常工作吗?