Windows PowerShell 係處理物件。Windows PowerShell 允許您建立基本上屬於具名物件的變數,以保存輸出供稍後使用。若您曾在其他殼層中使用過變數,務請記得 Windows PowerShell 變數是物件而非文字。

變數一律指定成以 $ 字元開頭,且名稱中可包含任何英數字元或底線。

建立變數

輸入有效的變數名稱即可建立變數:

PS> $loc
PS>

此命令不會傳回任何結果,因為 $loc 並未包含值。您可透過單一步驟同時建立變數並指定其值。如果變數不存在,Windows PowerShell 才會建立該變數;否則便會將指定的值指定給現有的變數。若要將您的目前位置儲存至 $loc 變數,請輸入:

$loc = Get-Location

輸入此命令後不會顯示任何輸出,因為輸出已傳送到 $loc。Windows PowerShell 會顯示輸出其實是因未被導向的資料始終傳送到螢幕上所致。輸入 $loc 將顯示您的目前位置:

PS> $loc

Path
----
C:\temp

您可以使用 Get-Member 顯示變數的內容相關資訊。將 $loc 傳送給 Get-Member 便可看到此變數是 PathInfo 物件,就跟 Get-Location 的輸出一樣:

PS> $loc | Get-Member -MemberType Property


   TypeName: System.Management.Automation.PathInfo

Name         MemberType Definition
----         ---------- ----------
Drive        Property   System.Management.Automation.PSDriveInfo Drive {get;}
Path         Property   System.String Path {get;}
Provider     Property   System.Management.Automation.ProviderInfo Provider {...
ProviderPath Property   System.String ProviderPath {get;}

操控變數

Windows PowerShell 提供了幾個用於操控變數的命令。如需查閱完整的易讀格式列表,請輸入:

Get-Command -Noun Variable | Format-Table -Property Name,Definition -AutoSize -Wrap

除了您在目前的 Windows PowerShell 工作階段中建立的變數之外,還有一些系統定義的變數。您可以使用 Remove-Variable Cmdlet 移除所有不是由 Windows PowerShell 控制的變數。輸入下列命令將移除所有的變數:

Remove-Variable -Name * -Force -ErrorAction SilentlyContinue

這會產生如下的確認提示。

Confirm
Are you sure you want to perform this action?
Performing operation "Remove Variable" on Target "Name: Error".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):A

若您接著執行 Get-Variable Cmdlet,就會看到只剩下 Windows PowerShell 變數。由於還有一個變數代表 Windows PowerShell 磁碟機,輸入下列命令亦可顯示所有的 Windows PowerShell 變數:

Get-ChildItem variable:

使用 Cmd.exe 變數

Windows PowerShell 雖然不是 Cmd.exe,卻執行於 Windows 命令殼層環境,並可使用 Windows 中任何環境所提供的變數。這些變數是透過名稱為 env: 的磁碟機所公開。輸入下列命令即可檢視這些變數:

Get-ChildItem env:

儘管標準變數 Cmdlet 並非設計用於存取 env: 變數,您仍可指定 env: 字首以取用這些變數。例如,若要查看作業系統根目錄,您可在 Windows PowerShell 中使用命令殼層變數 %SystemRoot% 變數,如下所示:

PS> $env:SystemRoot
C:\WINDOWS

您也可以在 Windows PowerShell 中建立和修改環境變數。從 Windows PowerShell 存取的環境變數必須遵守 Windows 環境變數通則。




目錄