分かりやすく、使いやすく。

実行中のスクリプトのファイル名を取得する方法

スポンサーリンク

PowerShell で実行中のスクリプトのファイル名を取得するには、$myInvocation(v3.0より前も対応)を使用する方法と、$PSCommandPath(v3.0以降)を使用する方法があります。

  1. $myInvocation を使用する方法
  2. $myInvocation を使用する方法(外部ファイルを読み込む場合)
  3. $PSCommandPath を使用する方法(v3.0以降)
  4. $PSCommandPath を使用する方法(外部ファイルを読み込む場合)


$myInvocation を使用する方法

次のサンプルスクリプトでは、実行するスクリプトのファイル名(script_name_test.ps1)をコンソールに出力します。

script_name_test.ps1
1
2
3
4
# スクリプト名を出力(バージョン3.0より前も対応)
$script_name = $myInvocation.MyCommand.name;
 
Write-Host $script_name; 

実行結果は次の通りです。

script_name_test.ps1 

$myInvocation を使用する方法(外部ファイルを読み込む場合)

外部ファイルを読み込む場合、外部ファイルで $myInvocation.MyCommand.name を参照すると外部ファイルの名前を取得できます。

outer_file.ps1(呼び出される側の外部ファイル)
1
2
3
4
$script_name2 = $myInvocation.MyCommand.name;
 
Write-Host '↓呼び出される側の実行結果';
Write-Host $script_name2; 
script_name_test.ps1(呼び出す側のファイル)
1
2
3
4
5
6
7
# 外部ファイルを読み込んで実行
. "c:\temp\outer_file.ps1";
 
$script_name1 = $myInvocation.MyCommand.name;
 
Write-Host "↓呼び出す側の実行結果";
Write-Host $script_name1; 

上記の script_name_test.ps1 を実行した結果は次の通りです。

↓呼び出される側の実行結果
outer_file.ps1
↓呼び出す側の実行結果
script_name_test.ps1 

$PSCommandPath を使用する方法(v3.0以降)

次のサンプルスクリプトでは、実行するスクリプトのファイル名(script_name_test.ps1)をコンソールに出力します。

script_name_test.ps1
1
2
3
4
# スクリプト名を出力(バージョン3.0以降)
$script_name = Split-Path -Leaf $PSCommandPath
 
Write-Host $script_name; 

実行結果は次の通りです。

script_name_test.ps1 

$PSCommandPath を使用する方法(外部ファイルを読み込む場合)

外部ファイルを読み込む場合、外部ファイルで $PSCommandPath を参照すると外部ファイルの名前を取得できます。

outer_file.ps1(呼び出される側の外部ファイル)
1
2
3
4
$script_name2 = Split-Path -Leaf $PSCommandPath;
 
Write-Host '↓呼び出される側の実行結果';
Write-Host $script_name2; 
script_name_test.ps1(呼び出す側のファイル)
1
2
3
4
5
6
7
# 外部ファイルを読み込んで実行
. "c:\temp\outer_file.ps1";
 
$script_name1 = Split-Path -Leaf $PSCommandPath;
 
Write-Host "↓呼び出す側の実行結果";
Write-Host $script_name1; 

上記の script_name_test.ps1 を実行した結果は次の通りです。

↓呼び出される側の実行結果
outer_file.ps1
↓呼び出す側の実行結果
script_name_test.ps1 
スポンサーリンク
スポンサーリンク