スクリプト自身のパス、スクリプトを呼び出したスクリプトのパスを返す関数
よく分からないけどこれでいいんじゃなかろうか。
function Get-ScriptName { <# .SYNOPSIS スクリプト名を取得する。 .DESCRIPTION 引数なしならスクリプト自身のフルパス。 引数が$trueならスクリプトを直接呼び出したスクリプトのフルパス。 #> param([bool]$caller) if($caller) { $script:myInvocation.ScriptName } else { $script:myInvocation.MyCommand.path } }
と思ったけど、せっかくだからこんな関数を作った。
# profile.ps1 function Get-CalledScript { <# .SYNOPSIS コールスタック上にあるスクリプト名を取得する。 .DESCRIPTION 引数が0だとこの関数が呼ばれたスクリプトの名前を返す。ただし、このファイルからは呼ばれないものとする。 引数が1以上だとコールスタックを遡ってn個前のスクリプトを返す。 引数なしだとスクリプト名の配列を返す。 #> param([int]$level) $calledScripts = (Get-PSCallStack).ScriptName | ? { if($tmp -eq $null){ $tmp = $_; } if($tmp -ne $_){ $tmp = $_; $true } } if($PSBoundParameters.Count -eq 0) { $calledScripts } else { $calledScripts[$level] } }