Powershellのスクリプト内で実行ファイル(ps1ファイル)のファイル名を取得してみました。
ps1ファイル内で自分自身のファイル名を取得する
以下のコマンドで取得可能です。
# スクリプトのフルパスを取得
$ScriptFullPath = $MyInvocation.MyCommand.Path
# スクリプトのファイル名を取得
$ScriptFileName = [System.IO.Path]::GetFileName($scriptFullPath)
# ファイル名を表示
Write-Output "ScriptName : $ScriptFileName"
コマンドの解説
$MyInvocation.MyCommand.Path
$MyInvocation は、現在のスクリプトの実行に関する情報を格納する自動変数です。
MyCommand.Path プロパティは、スクリプトの完全なパスを返します。
これによってスクリプトのフルパスを取得できます。
[System.IO.Path]::GetFileName($scriptFullPath)
System.IO.Path クラスの GetFileName メソッドを使用して、パスからファイル名のみを取り出します。
実行例
上記のスクリプトの実行結果は以下になります。
PS C:\> powershell -ExecutionPolicy Unrestricted -File .\getfilename.ps1
ScriptName : getfilename.ps1