簡體   English   中英

無法使用Set-Variable設置變量的Description屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM