共通のモジュールやスクリプトを参照する必要がある場合は、現在のスクリプト ファイルに相対的なパスを使用するようにしています。こうすることで、スクリプトは常にライブラリ内の他のスクリプトを見つけることができます。
では、現在のスクリプトのディレクトリを決定する最良かつ標準的な方法は何でしょうか? 現在、私は次のことを行っています:
$MyDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
モジュール (.psm1) ではこの情報を取得するために使用できることはわかっています$PSScriptRoot
が、通常のスクリプト (つまり .ps1 ファイル) では設定されません。
現在の PowerShell スクリプト ファイルの場所を取得する標準的な方法は何ですか?
ベストアンサー1
# This is an automatic variable set to the current file's/module's directory
$PSScriptRoot
パワーシェル2
PowerShell 3 より前は、MyInvocation.MyCommand.Definition
一般的なスクリプトのプロパティをクエリするより良い方法はありませんでした。私が作成したほぼすべての PowerShell スクリプトの先頭には、次の行がありました。
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition