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