【PowerShell】実行したスクリプトのファイル名やパス情報を取得する


この記事はプロモーションを含みます。

PowerShell

ホーム > PowerShell 逆引きリファレンス

実行したPowerShellスクリプトの格納パスやファイル名、フルパスを取得する方法を解説します。

はじめに

ここでは、実行したPowerShellスクリプトにおける下記のようなパス情報を取得する方法を説明します。
取得する方法はいくつかあるので、使いやすいものを使用して頂ければと思います。

  • 実行したスクリプトのフルパス
  • 実行したスクリプトのパス(フォルダ)
  • 実行したスクリプトのファイル名

また、本記事に記載している方法は、実行したスクリプトの情報を取得するものなので、
PowerShellのコンソールに、記載しているコマンドを打ち込んでも、ブランク値が返るか、エラーとなってしまいますのでご注意ください。

スクリプトのフルパスを取得する

ここでは、実行したスクリプトのフルパスを取得する方法を説明します。

下記のように記述することで、フルパスを取得することが出来ます。

$MyInvocation.MyCommand.Path

実行結果です。

C:\workspace\PowerShell\test.ps1

スクリプトが格納されているパス・フォルダ名を取得する

ここでは、実行したスクリプトのパス、フォルダ名を取得する方法を説明します。

下記のように記述することで、パスを取得することが出来ます。

Split-Path $MyInvocation.MyCommand.Path -Parent

実行結果です。

C:\workspace\PowerShell

PowerShellのコンソールで、上記のコマンドを実行すると、以下のエラーが発生します。
これは、このコマンドが実行したスクリプトの情報を取得するものですが、
コンソールから直接実行すると、スクリプトの情報が存在しないために発生しています。

PS C:\workspace\PowerShell> Split-Path $MyInvocation.MyCommand.Path -Parent
Split-Path : 引数が null であるため、パラメーター 'Path' にバインドできません。
発生場所 行:1 文字:12
+ Split-Path $MyInvocation.MyCommand.Path -Parent
+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Split-Path]、ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.SplitPathCommand

PowerShellのバージョンが「3」以降であれば、以下のように取得することも可能です。

$PSScriptRoot

実行結果は以下のようになります。

C:\workspace\PowerShell

スクリプトのファイル名を取得する

ここでは、実行したスクリプトのファイル名を取得する方法を説明します。

下記のように記述することで、ファイル名を取得することが出来ます。

Split-Path $MyInvocation.MyCommand.Path -Leaf -Resolve

実行結果です。

test.ps1

その他、以下のように記述しても、ファイル名を取得することが出来ます。

$MyInvocation.MyCommand.Name

実行結果です。

test.ps1

コメント

タイトルとURLをコピーしました