Я смущен тем, что я увидел в книге Learn PowerShell за месяц обедов. В главе 21, когда автор обсуждает функции, которые принимают входные данные через привязку параметров или конвейер, он дает два шаблона.Обработка трубопровода и ввода параметров в функции Powershell
Первого следующего
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 {}
}
во второй, как этом
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 {}
}
Я знаю, что второй образец является стандартным Powershell 2.0 Advanced функции. Мой вопрос заключается в поддержке Powershell 2.0 для директивы cmdletbinding, если вы захотите использовать первый шаблон. Это просто наследие Powershell 1.0? В принципе, когда-либо было время использования Powershell 2.0, которое я хотел бы пообщаться с первым шаблоном, когда второй шаблон настолько чище.
Любое понимание будет оценено по достоинству.
спасибо.
Здравствуйте. Спасибо Вам за информацию. Это то, что я хотел знать. – lowteq