![](/img/trans.png)
[英]How to declare global variable using Set-Variable in PowerShell?
[英]Unable to set Description property of a variable using Set-Variable
我正在嘗試編寫一個函數,該函數可用來將變量標記為屬於腳本,因此在創建它們時,可以標記它們以便以后進行標識(例如,用於調試)。
下面的代碼不會失敗或顯示任何錯誤,但實際上也不會設置Description屬性:
Function Tagit([string[]]$params){foreach($param in $params){Set-Variable -name $param -Description "Script"}}
$filein="\\blah\blah"
[string[]]$RepsToRun = "IAM","OPS","ADMIN"
Tagit('filein','RepsToRun')
運行時,我知道它可以正確處理params變量,因為傳入的參數名稱已寫入控制台。
但是,如果我檢查變量,則說明屬性仍未設置,例如
get-variable filein|select *
PSPath : Microsoft.PowerShell.Core\Variable::filein
PSDrive : Variable
PSProvider : Microsoft.PowerShell.Core\Variable
PSIsContainer : False
Name : filein
Description :
Value : \\blah\blah
Visibility : Public
Module :
ModuleName :
Options : None
Attributes : {}
有什么想法我想念/在這里做錯了嗎?
編輯 Mike Shepard指出了顯而易見的...范圍!
因此,以下代碼有效:
Function Tagit([string[]]$params){$params|foreach{Set-Variable -name $_ -Description "Script" -scope 1}}
$filein="\\blah\blah"
[string[]]$RepsToRun = "IAM","OPS","ADMIN"
Tagit('filein','RepsToRun')
Get-Variable filein|select Name,Description,Value
Get-Variable RepsToRun|select Name,Description,Value
並返回:
filein
RepsToRun
Name Description Value
---- ----------- -----
filein Script \\blah\blah
RepsToRun Script {IAM, OPS, ADMIN}
看起來像一個范圍界定問題。 您正在修改該函數本地的變量(外部變量的副本)。
如您所見,您可以使用-scope參數使用Set-Variable指定范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.