現在の PowerShell スクリプトの場所を確認する最適な方法は何ですか? 質問する

現在の PowerShell スクリプトの場所を確認する最適な方法は何ですか? 質問する

共通のモジュールやスクリプトを参照する必要がある場合は、現在のスクリプト ファイルに相対的なパスを使用するようにしています。こうすることで、スクリプトは常にライブラリ内の他のスクリプトを見つけることができます。

では、現在のスクリプトのディレクトリを決定する最良かつ標準的な方法は何でしょうか? 現在、私は次のことを行っています:

$MyDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)

モジュール (.psm1) ではこの情報を取得するために使用できることはわかっています$PSScriptRootが、通常のスクリプト (つまり .ps1 ファイル) では設定されません。

現在の PowerShell スクリプト ファイルの場所を取得する標準的な方法は何ですか?

ベストアンサー1

PowerShell 3+

# 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

おすすめ記事