簡體   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