![](/img/trans.png)
[英]How to declare global variable using Set-Variable in PowerShell?
[英]Powershell Set-Variable resets Variable instead of updating it
我对如何使用Set-Variable
更改Set-Variable
中的特定值感到困惑。 我不明白由此产生的行为。 我正在 Powershell 5.1 中尝试这个。
如果我用New-Variable
创建一个新New-Variable
New-Variable -Name TestVariable -Value @{Name1 = 'Value1'; Name2 = 'Value2'}
然后我尝试用Set-Variable
改变它
Set-Variable -Name TestVariable -Value @{Name1 = 'NewValue'}
为什么我的输出现在是:
Name Value
---- -----
Name1 NewValue
而不是预期的:
Name Value
---- -----
Name1 NewValue
Name2 Value2
Set-Variable
似乎重置整个变量而不是更改它。 或者创建一个没有-Force
设置的新变量,这有点可怕。
Microsoft 文档中的描述说:
Set-Variable cmdlet 将值分配给指定的变量或更改当前值。 如果变量不存在,cmdlet 会创建它。
我是否以某种方式误解了或更改了部分?
我还尝试将参数存储在变量本身中,而不是在-Value
之后将其写出,但这会导致与预期相同的行为。
现在,如果我在没有Set-Variable
情况下更改值,它就可以正常工作。
$TestNewVariable.Name1 = 'NewValue'
并且输出完全符合预期:
Name Value
---- -----
Name1 NewValue
Name2 Value2
解决方案不是更改变量中的值,而是再次写入所有值。 但是,我很想知道为什么Set-Variable
不只是改变值或我做错了什么。
不像名称Set-Variable
可能暗示它用于编辑变量值,它仅用于编辑变量属性,例如 -Scope、-Visibility、-Description 等。其中可以是变量的 -Value,但只能将 Value 作为整体而不是值属性,因为Set-Variable
在任何时候都不关心值属性,因此无法编辑它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.