提供者名稱

Variable

磁碟機

Variable:

簡短描述

提供 Windows PowerShell 變數及其值的存取權。

詳細描述

Windows PowerShell Variable 提供者可以用來取得、新增、變更、清除和刪除目前主控台中的 Windows PowerShell 變數。

Windows PowerShell Variable 提供者支援 Windows PowerShell 所建立的變數,包括自動變數、喜好設定變數,以及您所建立的變數。

Variable 提供者是指僅包含變數物件的一般命名空間。變數沒有子項目。

大多數的變數是 System.Management.Automation.PSVariable 類別的執行個體。不過,還是有部分變異。例如,"?" 變數是 QuestionMarkVariable 類別的成員,而 "MaximumVariableCount" 變數是 SessionStateCapacityVariable 類別的成員。

Variable 提供者會在 Variable: 磁碟機中公開其資料存放區。若要使用變數,您可以將目前的位置變更為 Variable: 磁碟機 ("set-location variable:"),也可以從其他任何 Windows PowerShell 磁碟機執行工作。若要從其他位置參考變數,請在路徑中使用磁碟機名稱 (Variable:)。

Windows PowerShell 包括了一組專門設計用來檢視和變更變數的 Cmdlet:

-- Get-Variable

-- New-Variable

-- Set-Variable

-- Remove-Variable

-- Clear-Variable

使用這些 Cmdlet 時,並不需要在名稱中指定 Variable: 磁碟機。

Variable 提供者支援名稱包含 Item 名詞的所有 Cmdlet (Item Cmdlet),但 Invoke-Item 除外。此外,Variable 提供者支援 Get-ContentSet-Content Cmdlet。不過,它既不支援名稱包含 ItemProperty 名詞的 Cmdlet (ItemProperty Cmdlet),也不支援任何 Cmdlet 中的 Filter 參數。

您也可以不使用這些 Cmdlet,而使用 Windows PowerShell 運算式剖析器來建立、檢視和變更變數的值。如果是直接處理變數,請使用貨幣符號 ($) 將名稱識別為變數,並用指定運算子 (=) 建立和變更變數值。例如,"$p = Get-Process" 會建立 "p" 變數並在其中儲存 "Get-Process" 命令的結果。

變數的所有變更都只會影響目前的工作階段。若要儲存變更,請將變更新增至 Windows PowerShell 設定檔,或使用 Export-Console 來儲存目前的主控台。

範例

切換到 Variable: 磁碟機

-------------------------- 範例 1 --------------------------

這個命令會將目前的位置變更為 Variable: 磁碟機。您可以在 Windows PowerShell 中從任何的磁碟機執行此命令。若要返回檔案系統磁碟機,請輸入磁碟機名稱。例如,請輸入 "set-location c:"。

set-location variable:

顯示變數的值

-------------------------- 範例 1 --------------------------

這個命令會取得目前工作階段中所有變數及其值的清單。您可以從任何的 Windows PowerShell 磁碟機執行此命令。

get-childitem -path variable:

-------------------------- 範例 2 --------------------------

這個命令會取得名稱以 "max" 為開頭的變數。您可以從任何的 Windows PowerShell 磁碟機執行此命令。

get-childitem -path variable:max*

如果目前的位置是 Variable: 磁碟機,您就可以在路徑中省略磁碟機名稱。

-------------------------- 範例 3 --------------------------

這個命令會在命令列中輸入 WhatIfPreference 變數,藉以取得此變數的值。

變數名稱的前面會加上貨幣符號 ($) 指出其為變數。不指定 Variable: 磁碟機名稱。

$WhatIfPreference

-------------------------- 範例 4 --------------------------

這個命令會使用 Get-ChildItem 的 LiteralPath 參數,從 Variable: 磁碟機內部取得 "?" 變數的值。Get-ChildItem 不會嘗試解析 LiteralPath 參數值中的任何萬用字元。

get-childitem -literalpath ?

若要不使用 cmdlet 便顯示包含特殊字元名稱之變數的值,請輸入貨幣符號 ($) 和變數名稱。例如,若要顯示 "?" 變數的值,請輸入 "$?"。

-------------------------- 範例 5 --------------------------

這個命令會取得 Options 屬性值為 "ReadOnly" 或 "Constant" 的變數。

get-childitem -path variable: | where-object {$_.options -match "Constant" -or $_.options -match "ReadOnly"} | format-list -property name, value, options

建立新變數

-------------------------- 範例 1 --------------------------

這個命令會建立 "services" 變數,並在其中儲存 Get-Service 命令的結果。因為目前位置是 Variable: 磁碟機,所以 Path 參數的值會用點 (.) 來代表目前位置。

括住 Get-Service 命令的括號可確保此命令會先執行,然後才建立變數。如果沒有使用括號,新變數的值就會是 "Get-Service" 字串。

new-item -path . -name services -value (Get-Service)

如果您的位置不是在 variable: 磁碟機,請在路徑中包括 Variable: 磁碟機名稱。

-------------------------- 範例 2 --------------------------

這個命令會建立 "services" 變數,並在其中儲存 Get-Service 命令的結果。

此命令會使用貨幣符號 ($) 指出變數,並使用指派運算子 (=) 將 Get-Service 命令的結果指派給新建立的變數。

$services = Get-Service

若要建立不包含值的變數,請省略指派運算子。

顯示變數的屬性和方法

-------------------------- 範例 1 --------------------------

這個命令會使用 Get-Item Cmdlet 來取得所有變數。管線運算子 (|) 會將結果傳送至 Get-Member Cmdlet,再由後者顯示物件的方法和屬性。

get-item -path variable:* | get-member

當您經由管道將物件的集合 (例如 Variable: 磁碟機中的變數集合) 輸出至 Get-Member 時,Get-Member 就會個別評估集合中的每個物件,並傳回它所找到之每種物件類型的相關資訊。 若要取得 Variable: 磁碟機中物件集合的相關資訊,請使用 Get-Member 的 InputObject 參數。例如 "get-member -inputobject (get-item variable:*)"。當您使用 InputObject 時,Get-Member 就會評估集合,而非評估集合中的物件。

-------------------------- 範例 2 --------------------------

這個命令會列出 "home" 變數的屬性值。它會使用 Get-Item Cmdlet 來取得代表 "home" 變數的物件。管線運算子 (|) 會將結果傳送至 Format-List 命令。Format-List 命令會使用 Property 參數搭配萬用字元 (*) 來格式化並顯示 "home" 變數的所有屬性值。

get-item variable:home | format-list -property *

變更變數的屬性

-------------------------- 範例 1 --------------------------

這個命令會使用 Rename-Item Cmdlet,將 "a" 變數的名稱變更成 "processes"。

rename-item -path variable:a -newname processes

-------------------------- 範例 2 --------------------------

這個命令會使用 Set-Item Cmdlet 將 ErrorActionPreference 變數的值變更成 "Stop"。

set-item -path variable:ErrorActionPreference -value Stop

-------------------------- 範例 3 --------------------------

這個命令會將 ErrorActionPreference 變數的值變更為 "Stop"。

它會使用貨幣符號 ($) 指出變數,並使用指定運算子 (=) 指定其值。

$ErrorActionPreference = Stop

複製變數

-------------------------- 範例 1 --------------------------

這個命令會使用 Copy-Item Cmdlet 將 "processes" 變數複製到 "old_processes"。這個動作會建立與 "processes" 變數具有相同值且名為 "old_processes" 的新變數。

copy-item -path variable:processes -destination variable:old_processes

如果此命令是從 Variable: 磁碟機內部發出,您就可以在 Path 參數的值中省略磁碟機名稱。

-------------------------- 範例 2 --------------------------

這個命令會將 "processes" 變數複製到 "old_processes",而不使用 cmdlet。它會使用貨幣符號 ($) 指出變數,並使用指定運算子將 $processes 的值指定到 old_processes。

$old_processes = $processes

刪除變數

-------------------------- 範例 1 --------------------------

這個命令會從目前的工作階段中刪除 "serv" 變數。您可以在任何的 Windows PowerShell 磁碟機上執行此命令。

remove-variable -path variable:serv

-------------------------- 範例 2 --------------------------

這個命令會從目前的工作階段中刪除所有變數,但是 Options 屬性值為 Constant 的變數除外。如果沒有使用 Force 參數,此命令就不會刪除 Options 屬性值為 ReadOnly 的變數。

remove-item variable:* -force

將變數的值設定為 NULL

-------------------------- 範例 1 --------------------------

這個命令會使用 Clear-Item Cmdlet 將 "processes" 變數的值變更成 NULL。

clear-item -path variable:processes

-------------------------- 範例 2 --------------------------

這個命令透過為變數指定 NULL 值的方式清除 "processes" 變數的值。它會使用 $null 自動變數來代表 NULL 值。

$processes = $null

請參閱




目錄