1
我有一個腳本提示用戶輸入(網址,用戶名和密碼等)並驗證這些輸入或再次提示用戶。將可選參數傳遞給子例程而不實例化
現在我希望能夠在命令行中調用這些腳本,並將它們作爲可選參數並將它們傳遞給原始子例程。但是,在腳本範圍內,我可以測試參數是否由$PSBoundParameters.ContainsKey('a')
提供,但是一旦我將參數$a
(可能未提供)傳遞給某個函數,相同的測試將始終返回$True
。
樣品的編號:
function main {
param (
[string]$a
)
if ($PSBoundParameters.ContainsKey('a')) {
"main - a is $a"
}
else {
"main - didn't get a"
}
getStr $a
}
function getStr {
param (
[string]$a
)
if ($PSBoundParameters.ContainsKey('a')) {
"getStr - a is $a"
}
else {
"getStr - didn't get a"
}
}
輸入:
main
main "hello"
預期輸出:
main - didn't get a
getStr - didn't get a
main - a is hello
getStr - a is hello
實際輸出:
main - didn't get a
getStr - a is
main - a is hello
getStr - a is hello
我的猜測是,$a
被實例化調用getStr $a
的時候,有沒有處理這更優雅/正確的方法?
謝謝,這解決了如規定的問題。如果我可以 - 那麼我可能會得到幾個參數,哪個子程序只需要檢查一個呢? –
爲了將來的參考 - 我自己測試過,我只是將splatted('@')'PSBoundVariables'發送給每個函數,它會檢查它想要的密鑰。 –