設定變數的值。如果所要求之名稱的變數不存在,即建立變數。
語法
Set-Variable [-Name] <string[]> [[-Value] <Object>] [-Description <string>] [-Exclude <string[]>] [-Force] [-Include <string[]>] [-Option {<None> | <ReadOnly> | <Constant> | <Private> | <AllScope>}] [-PassThru] [-Scope <string>] [-Visibility {<Public> | <Private>}] [-Confirm] [-WhatIf] [<CommonParameters>]
描述
Set-Variable Cmdlet 會將值指派給指定的變數,或變更目前的值。如果變數不存在,此 Cmdlet 會加以建立。
參數
-Description <string>
指定變數的描述。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Exclude <string[]>
忽略指定的項目。此參數的值用於限定 Path 參數。輸入路徑元素或模式,例如 "*.txt"。允許使用萬用字元。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Force
允許建立與現有唯讀變數同名的變數,或變更唯讀變數的值。
根據預設,除非變數的選項值為 "ReadOnly" 或 "Constant",否則可以覆寫變數。如需詳細資訊,請參閱 Option 參數。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Include <string[]>
只變更指定的項目。此參數的值用於限定 Name 參數。請輸入名稱或名稱模式,例如 "c*"。允許使用萬用字元。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Name <string[]>
指定變數名稱。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Option <ScopedItemOptions>
變更變數的 Options 屬性值。有效的值包括:
-- None:不設定選項。(預設值為 "None")。
-- ReadOnly:無法變更變數的屬性,除非使用 Force 參數。您可以使用 Remove-Variable 刪除變數。
-- Constant:無法刪除變數,且無法變更其屬性。只有建立別名時才能使用 "Constant"。您無法將現有變數的選項變更為 "Constant"。
-- Private:變數只在 Scope 參數所指定的範圍內有效。此範圍由子範圍繼承。
-- AllScope:將變數複製到所有新建立的範圍。
若要查看變數的 Options 屬性,請輸入 "get-variable| Format-Table -property name, options -autosize"。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-PassThru
傳回代表新變數的物件。根據預設,此 Cmdlet 不會產生任何輸出。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Scope <string>
決定變數的範圍。有效的值包括 "Global"、"Local"、"Script" 或相對於目前範圍的數字 (從 0 到範圍總數,其中 0 代表目前範圍,1 代表其上層)。預設值為 "Local"。如需詳細資訊,請參閱 about_Scopes。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Value <Object>
指定變數的值。
必要? |
false |
位置? |
2 |
預設值 |
|
接受管線輸入? |
true (ByValue, ByPropertyName) |
接受萬用字元? |
false |
-Visibility <SessionStateEntryVisibility>
決定變數是否可在其建立所在的工作階段以外顯示。此參數是專為用在提供給其他使用者的指令碼和命令所設計。
有效的值包括:
-- Public:看得到變數 (預設值為 "Public")。
-- Private:看不到變數。
變數為私用時,不會出現在變數的清單 (例如由 Get-Variable 傳回的清單),也不會在 Variable:磁碟機中顯示。對私用變數的值進行讀取或變更的命令會傳回錯誤。但是,如果使用私用變數的命令是在該變數定義所在的工作階段中撰寫的,使用者就可以執行這種命令。
必要? |
false |
位置? |
named |
預設值 |
Public |
接受管線輸入? |
false |
接受萬用字元? |
false |
-Confirm
在執行命令前先提示確認。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-WhatIf
說明執行命令時將會發生何種情況,但不會實際執行命令。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.Object 您可經由管道將代表變數值的物件輸出至 Set-Variable。 |
輸出 |
無或 System.Management.Automation.PSVariable 當您使用 PassThru 參數時,Set-Variable 會產生代表新或變更變數的 System.Management.Automation.PSVariable 物件。否則,這個 Cmdlet 不會產生任何輸出。 |
範例 1
C:\PS>set-variable -name desc -value "A description" C:\PS>get-variable -name desc 描述 ----------- 這些命令會將 "desc" 變數的值設為 "A description",然後取得變數的值。
範例 2
C:\PS>set-variable -name processes -value (Get-Process) -option constant -scope global -description "All processes" -passthru | format-list -property * 描述 ----------- 這個命令會建立含有系統中所有處理序的全域唯讀變數,然後顯示變數的所有屬性。 此命令會使用 Set-Variable Cmdlet 來建立變數。它會使用 PassThru 參數建立代表新變數的物件,然後使用管線運算子 (|) 將該物件傳遞給 Format-List Cmdlet。它會將 Format-List 的 Property 參數值設定為全部 (*),用以顯示新建立變數的所有屬性。 "(Get-Process)" 這個值是放在括弧內,確保會在儲存至變數之前執行它。否則,變數會包含單字 "Get-Process"。
範例 3
C:\PS># set-variable -name counter -visibility private C:\PS> new-variable -name counter -visibility public -value 26 C:\PS> $counter 26 C:\PS> get-variable c* Name Value ---- ----- Culture en-US ConsoleFileName ConfirmPreference High CommandLineParameters {} Counter 26 C:\PS> set-variable -name counter -visibility private C:\PS> get-variable c* Name Value ---- ----- Culture en-US ConsoleFileName ConfirmPreference High CommandLineParameters {} C:\PS> $counter "Cannot access the variable '$counter' because it is a private variable" C:\PS> .\use-counter.ps1 Commands completed successfully. 描述 ----------- 這個命令會示範如何將變數的可見度變更為 "Private"。此變數可由具備必要權限的指令碼來讀取和變更,但使用者無法看到它。 範例輸出會顯示公用變數與私用變數之間的行為差異。
請參閱