我已經在我的劇本的開頭以下帕拉姆塊:使用[ValidateScript]在參數結果在誤差大約已經聲明參數
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相同的錯誤。我已經嘗試將$ debug放在Param塊的頂部,並帶有相同的錯誤。
如果我刪除[ValidateScript]部分,它工作正常。
有人可以告訴我爲什麼這樣做嗎?爲什麼[ValidateScript]使用$ Debug以及如何避免重命名變量?
我所用的參數,因爲他們是共同的。堅持一個共同的設置,讓生活更輕鬆。我也檢查他們沒有保留。 即使$ Debug參數沒有被[ValidateScript]驗證,它仍然阻止我在我自己的腳本中使用Debug參數? – Paul 2012-03-01 08:47:00
@Pauby你看到我寫了什麼嗎?當您添加參數屬性'[Parameter(Mandatory = $ true)]'PowerShell會自動添加通用參數,這就是您遇到命名衝突的原因。 – 2012-03-01 14:15:19