Set-Variable
変数の値を設定します。指定された名前の変数が存在しない場合は、その名前の変数を作成します。
構文
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 コマンドレットは、指定された変数に値を割り当てたり、現在の値を変更したりします。変数が存在しない場合は、変数を作成します。
パラメーター
-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
新しい変数を表すオブジェクトを返します。既定では、このコマンドレットによる出力はありません。
必須 |
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: 変数は表示されません。
Private の変数は、Get-Variable が返す変数などの変数の一覧や Variable: ドライブの表示には表示されません。Private の変数の値を読み取ったり変更したりするコマンドでは、エラーが返されます。ただし、Private の変数を定義したセッションでコマンドが記述された場合は、その変数を使用するコマンドをユーザーが実行できます。
必須 |
false |
位置 |
named |
既定値 |
Public |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Confirm
コマンドを実行する前に確認メッセージを表示します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-WhatIf
実際にコマンドを実行せずに、コマンドを実行すると何が起きるかを出力します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
System.Object パイプを使用して変数の値を表すオブジェクトを Set-Variable に渡すことができます。 |
出力 |
なし、または System.Management.Automation.PSVariable PassThru パラメーターを使用すると、Set-Variable は新しい変数または変更された変数を表す System.Management.Automation.PSVariable オブジェクトを生成します。それ以外の場合、このコマンドレットによる出力はありません。 |
例 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 コマンドレットを使用して変数を作成します。PassThru パラメーターを使用して作成した新しい変数を表すオブジェクトをパイプライン演算子 (|) を使用して Format-List コマンドレットに渡します。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" に変更する方法を示します。この変数は、必要な権限があればスクリプトによる読み取りや変更が可能ですが、ユーザーには表示されません。
サンプル出力は、パブリック変数とプライベート変数の動作の違いを示しています。