設定變數的值。如果所要求之名稱的變數不存在,即建立變數。

語法

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"。此變數可由具備必要權限的指令碼來讀取和變更,但使用者無法看到它。

範例輸出會顯示公用變數與私用變數之間的行為差異。






請參閱




目錄