Variable Provider
プロバイダー名
Variable
ドライブ
Variable:
簡易説明
Windows PowerShell の変数とその値へのアクセスを提供します。
詳細説明
Windows PowerShell 変数プロバイダーを使用すると、現在のコンソールにある Windows PowerShell の変数を取得、追加、変更、クリア、および削除できます。
Windows PowerShell 変数プロバイダーは、Windows PowerShell が作成する変数 (自動変数、設定変数、およびユーザーが作成する変数を含む) をサポートします。
変数プロバイダーは、変数オブジェクトのみを含むフラットな名前空間です。変数には子の項目がありません。
ほとんどの変数が System.Management.Automation.PSVariable クラスのインスタンスです。ただし、いくつかの例外があります。たとえば、"?" 変数は QuestionMarkVariable クラスのメンバーで、"MaximumVariableCount" 変数は SessionStateCapacityVariable クラスのメンバーです。
変数プロバイダーは、Variable: ドライブにデータ ストアを公開します。変数を操作するには、場所を Variable: ドライブに変更するか ("set-location variable:")、別の Windows PowerShell ドライブから作業します。別の場所から変数を参照するには、パスでドライブ名 (Variable:) を指定します。
Windows PowerShell には、特に変数の表示と変更を行うために設計されたコマンドレットがあります。
-- Get-Variable
-- New-Variable
-- Set-Variable
-- Remove-Variable
-- Clear-Variable
これらのコマンドレットを使用するときは、名前に Variable: ドライブを指定する必要がありません。
Variable プロバイダーは、Invoke-Item を除き、名前に Item という名詞が含まれるすべてのコマンドレットをサポートします。Variable プロバイダーは、Get-Content および Set-Content コマンドレットもサポートします。ただし、ItemProperty という名詞を含むコマンドレット (ItemProperty コマンドレット)、およびあらゆるコマンドレットの Filter パラメーターはサポートされません。
また、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: ドライブから "?" 変数の値を取得します。LiteralPath パラメーターの値にワイルドカード文字が含まれていても、Get-ChildItem はその解決を試みません。
get-childitem -literalpath ?
コマンドレットを使用せずに、特殊文字の名前を持つ変数の値を表示するには、ドル記号 ($) と変数名を入力します。たとえば、"?" 変数の値を表示するには、「$?」と入力します。
-------------------------- 例 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 コマンドレットを使用してすべての変数を取得します。結果はパイプライン演算子 (|) によって Get-Member コマンドレットに渡され、オブジェクトのメソッドとプロパティが表示されます。
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 コマンドレットを使用して、"home" 変数を表すオブジェクトを取得します。その結果は、パイプライン演算子 (|) によって Format-List コマンドに渡されます。Format-List コマンドは、ワイルドカード文字 (*) が指定された Property パラメーターを使用して、"home" 変数のすべてのプロパティの値を書式設定し、表示します。
get-item variable:home | format-list -property *
変数のプロパティを変更する
-------------------------- 例 1 --------------------------
次のコマンドは、Rename-Item コマンドレットを使用して、"a" 変数の名前を "processes" に変更します。
rename-item -path variable:a -newname processes
-------------------------- 例 2 --------------------------
このコマンドは、Set-Item コマンドレットを使用して、ErrorActionPreference 変数の値を "Stop" に変更します。
set-item -path variable:ErrorActionPreference -value Stop
-------------------------- 例 3 --------------------------
このコマンドは、ErrorActionPreference 変数の値を "Stop" に変更します。
ドル記号 ($) を使用して変数であることを示し、代入演算子 (=) を使用して値を代入しています。
$ErrorActionPreference = Stop
変数をコピーする
-------------------------- 例 1 --------------------------
このコマンドは、Copy-Item コマンドレットを使用して、"processes" 変数を "old_processes" にコピーします。これで、"processes" 変数と同じ値を持つ "old_processes" という新しい変数が作成されたことになります。
copy-item -path variable:processes -destination variable:old_processes
Variable: ドライブで実行する場合は、Path パラメーターの値からドライブ名を省略できます。
-------------------------- 例 2 --------------------------
このコマンドは、コマンドレットを使用せずに、"processes" 変数を "old_processes" にコピーします。ドル記号 ($) を使用して変数であることを示し、代入演算子を使用して $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 コマンドレットを使用して "processes" 変数の値を NULL に変更します。
clear-item -path variable:processes
-------------------------- 例 2 --------------------------
このコマンドは、null 値を代入することによって "processes" 変数をクリアします。NULL 値を表すのに $null 自動変数を使用しています。
$processes = $null