я следующий Param блок в начале моего сценария:Используя [ValidateScript] в результатах Param ошибочного об уже объявленном параметре
Param
(
[Parameter(Mandatory = $true)]
[ValidateScript({Test-Path $_ -PathType Leaf})]
[string]$Config,
[switch]$OverThresholdOnly,
[switch]$SendEmail,
[switch]$Debug
)
Когда я запускаю сценарий, я получаю ошибку:
"A parameter with the name 'Debug' was defined multiple times for this command. At line:1 char:1"
Line:1 and char:1 is the start of the Param block.
Если я изменю $ Debug на $ Verbose, я получаю ту же ошибку в Verbose. Я попытался поставить $ debug в верхней части блока Param с той же ошибкой.
Если я удалю раздел [ValidateScript], он отлично работает.
Может ли кто-нибудь сказать мне, почему он это делает? Почему [ValidateScript] использует $ Debug и как обойти это без переименования переменной?
Я использовал параметры, потому что они были обычным явлением. Придерживайтесь общего набора, чтобы облегчить жизнь. Я также проверял, что они не были зарезервированы. Несмотря на то, что параметр $ Debug не проверяется [ValidateScript], он по-прежнему не позволяет мне использовать параметр Debug в моем собственном скрипте? – Paul
@Pauby Вы видели то, что я написал? Когда вы добавляете атрибут параметра '[Parameter (Обязательный = $ true)], PowerShell автоматически добавляет общие параметры, поэтому вы получаете столкновение имен. –