繁体   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