繁体   English   中英

Powershell Set-Variable 重置变量而不是更新它

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM