1. ホーム
  2. powershell

[解決済み] PowerShellです。スクリプトのディレクトリからコマンドを実行する

2022-04-25 08:08:55

質問

PowerShellスクリプトで、スクリプトのカレントディレクトリを使用して何らかの処理を行うものがあります。そのため、そのディレクトリの内部で .\script.ps1 は正しく動作します。

次に、スクリプトの参照ディレクトリを変更せずに、別のディレクトリからそのスクリプトを呼び出したいと思います。そこで ..\..\dir\script.ps1 で、そのスクリプトがそのディレクトリの中から呼ばれたように動作するようにしたい。

また、どのディレクトリからでも実行できるようにスクリプトを修正するにはどうすればよいですか?

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

スクリプトの横にあるファイルを参照できるように、スクリプト自身のパスが欲しいということでしょうか? これを試してみてください。

$scriptpath = $MyInvocation.MyCommand.Path
$dir = Split-Path $scriptpath
Write-host "My directory is $dir"

MyInvocationとそのプロパティから、多くの情報を得ることができます。

現在の作業ディレクトリにあるファイルを参照したい場合は、Resolve-Path または Get-ChildItem を使用することができます。

$filepath = Resolve-Path "somefile.txt"

EDIT(OPのコメントを元に)。

# temporarily change to the correct folder
Push-Location $dir

# do stuff, call ant, etc

# now back to previous directory
Pop-Location

Invoke-Commandを使って似たようなことを実現する方法は他にもあるはずです。