-3
我聲明所有變量var.ps1
這樣的:
$a = "aa"
$b = "bb"
中,第二腳本check.ps1
我試圖創建一個函數來檢查,如果傳遞的參數在var.ps1
像存在這個:
check "$a" "$b" "$c"
我需要在我的函數中使用args。
您能否給我任何建議?
我聲明所有變量var.ps1
這樣的:
$a = "aa"
$b = "bb"
中,第二腳本check.ps1
我試圖創建一個函數來檢查,如果傳遞的參數在var.ps1
像存在這個:
check "$a" "$b" "$c"
我需要在我的函數中使用args。
您能否給我任何建議?
目前還不清楚爲什麼你想要這個,我可能會以另一種方式解決它,但要回答你的問題,你可以嘗試下面的例子。
請記住對前導值爲$
的值使用文字字符串(單引號),以避免它們被視爲變量。如果不是,PowerShell將嘗試用它的值替換變量(或者如果沒有定義,則沒有任何變量),這意味着Check-Variables
將不會獲取變量名稱。以下解決方案同時接受'a'
和'$a'
。
Var.ps1
$a = "aa"
$b = "bb"
Check.ps1
#Dot-sourcing var.ps1 which is located in the same folder as Check.ps1
#Loads variables into the current scope so every function in Check.ps1 can access them
. "$PSScriptRoot\var.ps1"
function Check-Variables {
foreach ($name in $args) {
#Remove leading $
$trimmedname = $name -replace '^\$'
if(-not (Get-Variable -Name $trimmedname -ErrorAction SilentlyContinue)) {
Write-Host "ERROR: Variable `$$trimmedname is not defined"
}
}
}
Check-Variables '$a' "b" '$c'
演示:
PS> C:\Users\frode\Desktop\Check.ps1
ERROR: Variable $c is not defined
這樣爲例,我需要有一個消息ERREUR ==> $ C不存在 –
點源可以做到這一點,如果其他 –
在該腳本中使用'get-Variable'。在函數內部傳遞變量名稱時也使用單引號,否則它們將展開它們的值。 – Vesper