PowerShellの「 自動変数 」は、システム管理、自動化、およびスクリプト作成アクティビティに不可欠です。これらの変数は PowerShell ランタイムによって組み込まれており、スクリプトまたはコマンドの実行中に特定の情報を保存および参照するためのプレースホルダーとして機能します。これらの自動変数を理解して効果的に利用すると、PowerShell スクリプトの効率と機能を大幅に向上させることができます。
この記事の目的は、PowerShell の「自動変数」の概念、その重要性、およびさまざまなシナリオでの活用方法を探ることです。
PowerShell の自動変数とは何ですか?
まず、「」の定義を詳しく見てみましょう。 自動変数 ”。これらの変数は事前定義されており、スクリプトの実行中に PowerShell によって自動的に作成されます。これらは、システム、コマンドライン引数、スクリプト関連の詳細などに関する情報の提供など、さまざまな目的を果たします。
PowerShell はいくつかの「自動変数」を提供しており、それぞれがスクリプト実行において明確な目的を果たします。これらの変数は次のとおりです。
1.$PSVersionTable
PowerShell の基本的な自動変数の 1 つは「 $PSVersionTable ”。この変数により、スクリプト開発者は使用されている PowerShell のバージョンを確認できます。これは、特定の機能の互換性と可用性を考慮する場合に重要になります。
次のプロパティがこの変数に関連付けられています。
PSバージョン: PowerShell のバージョン番号を返します。
PSエディション: PowerShell 4 以前およびフル機能の Windows バージョンの PowerShell 5.1 では、このプロパティの値は「デスクトップ」になります。この特性には、PowerShell 6 以降の Core だけでなく、Windows Nano Server や Windows IoT などの低フットプリント エディションの Windows PowerShell 5.1 の価値もあります。
GitCommitId: ソースファイルのGitHubコミットIDを取得します。
あなた: PowerShell が使用しているコンピューター システムに関する情報をログに記録します。
プラットホーム: オペレーティング システムのサポート プラットフォームを返します。 Unix は Linux と macOS 上で価値があります。 $IsMacOs と $IsLinux をチェックしてください。
PS互換バージョン: 現在のバージョンと互換性のある PowerShell バージョンが返されます。
PSRemotingProtocolVersion: PowerShell リモート管理プロトコルのバージョン番号を返します。
シリアル化バージョン: シリアル化メソッドのバージョンを返します。
WSManStackバージョン: WS-Management スタックのバージョン番号を返します。
$ PSVersionTable
2.$Args
PowerShell のもう 1 つの重要な自動変数は「 $Args これには、スクリプトまたは関数に渡されるコマンドライン引数の配列が含まれます。この変数を使用すると、開発者は、指定された引数をスクリプト内で動的に処理および操作できるようになります。
関数を定義するときは、「param」キーワードを使用してパラメータを宣言するか、関数名の後にかっこ内にパラメータのカンマ区切りリストを追加できます。イベント アクションの「$Args」変数には、処理されるイベントのイベント パラメーターのプレースホルダーとして機能するオブジェクトが格納されます。
フォーリーチ ( $arg の $Args ) {書き込みホスト $arg
}
3. $MyInvocation
” $MyInvocation ” 変数は、現在実行中のスクリプトまたはプロシージャに関する重要な背景データを提供します。スクリプト名、スクリプトの行番号、スクリプトが対話型で実行されるか非対話型で実行されるかなどのプロパティが提供されます。これらのプロパティは、スクリプト開発者が分岐ロジックを実装したり、エラー処理メカニズムを定義したり、意味のあるログやレポートを生成したりするのに役立ちます。
$ 私の呼び出し
4.$エラー
あまり知られていない自動変数「 $エラー 」は、スクリプトの実行中に発生するエラー メッセージや例外を効果的にキャプチャします。 「$Error」にアクセスすると、例外メッセージ、スタック トレース、エラー コードなどの特定のエラーの詳細を取得でき、詳細な分析とデバッグが可能になります。
最新のエラーは、配列「」の最初のエラー オブジェクトによって表されます。 $エラー[0] ”。値「Ignore」を指定して ErrorAction 共通オプションを使用すると、エラーが「$Error」配列に追加されるのを停止できます。
正確なコマンドを入力したとします。
ip [ オンフィグ
ここで、「$Error」コマンドレットを入力すると、次のようになります。
$ エラー
5.$PSCmdlet
PowerShell モジュールを使用する場合、自動変数「 $PSCmdlet 」が施行されます。この変数は、呼び出されるコマンドレットまたは関数の現在のインスタンスへのアクセスを提供し、そのプロパティおよびメソッドとの直接対話を容易にします。
高度なスクリプト開発者は、「$PSCmdlet」を使用して、組み込み機能を拡張または変更することでモジュールの動作を微調整および強化できます。使用基準に応じて、コマンドレットまたは関数コードでオブジェクトの属性とメソッドを使用できます。
関数 typeof-psコマンドレット {[ コマンドレットバインディング ( ) ] パラメータ ( )
エコー 「`のタイプ」 $psコマンドレット は $($psCmdlet.GetType() 。フルネーム)'
}
typeof-psコマンドレット
前述の変数に加えて、PowerShell には $HOME、$PROFILE、$PWD などの自動変数が含まれており、入力へのアクセス、エラーの追跡、環境情報の取得、パラメーターの管理など、さまざまな目的に役立ちます。これらの変数を以下に示します。
自動変数 | 説明 |
$$ | PowerShell セッションによって受信された前の行の最後のトークンを保持します。 |
$? | 最後のコマンドの実行ステータスを保存します。 |
$^ | セッションによって受信された最後の行の最初のトークンが含まれます。 |
$_ | パイプライン内の現在のオブジェクトを表します。 |
$コンソールファイル名 | セッションで最後に使用されたコンソール ファイル (.psc1) のパスが含まれます。 |
$EnabledExperimentalFunctions | 有効になっている実験的機能のリストが含まれています。 |
$イベント | 処理中のイベントを表す「PSEventArgs」オブジェクトが含まれます。 |
$EventArgs | 処理されるイベントの最初のイベント引数が含まれます。 |
$EventSubscriber | 処理されているイベントのイベント サブスクライバーを表します。 |
$ExecutionContext | PowerShell ホストの実行コンテキストを表します。 |
$false | ブール値「False」を表します。 |
$foreach | 「for-Each」ループの列挙子が含まれます。 |
$ホーム | ユーザーのホームディレクトリのフルパスが含まれます。 |
$ホスト | PowerShell の現在のホスト アプリケーションを表します。 |
$input | 関数またはスクリプトに渡されるすべての入力の列挙子として機能します。 |
$IsCoreCLR | セッションが .NET Core ランタイム (CoreCLR) で実行されているかどうかを示します。 |
$IsLinux | セッションが Linux オペレーティング システムで実行されているかどうかを示します。 |
$IsMacOS | セッションが MacOS オペレーティング システムで実行されているかどうかを示します。 |
$IsWindows | セッションが Windows オペレーティング システムで実行されているかどうかを識別します。 |
$LASTEXITCODE | 最後のネイティブ プログラムまたは PowerShell スクリプトの終了コードを保存します。 |
$Matches | 「-match」および「-notmatch」演算子で一致した文字列が含まれます。 |
$NestedPromptLevel | ネストされたコマンドまたはデバッグ シナリオでの現在のプロンプト レベルを追跡します。 |
$null | null または空の値を表します。 |
$PID | PowerShell セッションのプロセス識別子 (PID) が含まれます。 |
$PROFILE | 現在のユーザーおよびホスト アプリケーションの PowerShell プロファイルのフル パスが含まれます。 |
$PSBoundParameters | スクリプトまたは関数に渡されるパラメータとその値の辞書を保持します。 |
$PSコマンドパス | 実行されるスクリプトの完全なパスとファイル名が含まれます。 |
$PSカルチャー | 現在の PowerShell 実行スペースの文化を反映します。 |
$PSEdition | PowerShell のエディション情報が含まれます。 |
$PSHOME | PowerShell インストール ディレクトリのフル パスが含まれます。 |
$PSItem | $_ と同じで、パイプライン内の現在のオブジェクトを表します。 |
$PSScriptRoot | 実行中のスクリプトの親ディレクトリのフルパスが含まれます。 |
$PSSenderInfo | PSSession を開始したユーザーに関する情報が含まれます。 |
$PSUICulture | オペレーティング システムで構成されているユーザー インターフェイス (UI) 文化を反映します。 |
$障害者 | PowerShell セッションの現在の作業ディレクトリを表します。 |
$送信者 | イベントを生成したオブジェクトが含まれます。 |
$シェルID | 現在のシェルの識別子が含まれます。 |
$スタックトレース | 最新のエラーのスタック トレースを保存します。 |
$スイッチ | 「Switch」ステートメントの列挙子が含まれます。 |
$this | クラスを拡張するスクリプト ブロック内のクラスのインスタンスを指します。 |
$true | ブール値「True」を表します。 |
PowerShell のすべての「自動変数」は、以下のコマンドを実行することで見つけることができます。
変数の取得
結論
「 自動変数 」は PowerShell スクリプトのバックボーンを形成しており、開発者はシステム、コマンドライン引数、スクリプト実行コンテキストなどに関する情報を取得できます。 PowerShell スクリプト開発者は、「$PSVersionTable」、「$Args」、「$MyInvocation」、「$Error」などの自動変数を利用することで、合理化されたシステム管理手法を作成できます。