1. ホーム
  2. powershell

[解決済み] 現在のPowerShellスクリプトの場所を特定する最良の方法は何ですか?

2022-03-16 04:03:36

質問

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

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

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

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

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

どのように解決するのですか?

PowerShell 3+

# This is an automatic variable set to the current file's/module's directory
$PSScriptRoot

PowerShell 2

PowerShell 3 よりも前のバージョンでは、このようなクエリ以外に良い方法はありませんでした。 MyInvocation.MyCommand.Definition プロパティを使用することで、一般的なスクリプトを作成できます。私は、基本的にすべての PowerShell スクリプトの先頭に次の行を記述していました。

$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition