PowerShell の自動変数とは何ですか

Powershell No Zi Dong Bian Shutoha Hedesuka



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」などの自動変数を利用することで、合理化されたシステム管理手法を作成できます。