社内SEの徒然なる日記

PowerShellでスクリプトを実行しているパスを知りたい

■ 実行フォルダ

PowerShellでスクリプトを作っていると、スクリプトの場所(フォルダ)を知りたいと思うことがあります。というか、ありました。

どうすれば良いかと思ったのですが、良い方法があるようです。

まず、スクリプトはここ(D:¥bbb)に置いておきます。
PowerShellで自フォルダ表示 (1)

このスクリプト(test.ps1)には、下記の処理を記述します。
Write-Host $MyInvocation.MyCommand.Path


実行すると、パスが返ってきましたが。
PowerShellで自フォルダ表示 (2)

・・・でも、欲しいのはこれではない。

■ 親フォルダ

さて、スクリプトの実行フォルダが欲しいという事は「実行しているスクリプトが存在するフォルダ」が必要な場合が多いと思います。

なので、スクリプトをひと工夫します。
Write-Host (Split-Path $MyInvocation.MyCommand.Path -Parent)


Split-Path コマンドレットに -Parent を付けて実行することで、親フォルダだけを表示させました。
PowerShellで自フォルダ表示 (3)

うん、これでOKですね。

■ 後書き

PowerShellで、あるファイルをネットワーク上の別のサーバーにコピーする処理を作っていました。

本当は、PowerShellのスクリプトもコピー先に置いておきたかったのですが、セキュリティの関係で実行時にエラーが出たりして動きません。手動で実行(対話型)なら、表示される警告に応答するだけで良かったのですが、今回はWindowsのタスクでスケジュール実行させたかったので、困ってしまいます。

本当は、電子署名を付けるのが王道なのでしょうが、社内のバックアップ用スクリプトにそんなことをすると、かえって今後の維持管理が難しくなります。

しょうがないので、スクリプトはPowerShellを起動するサーバーに置くことにしました。とか色々とやっている中で、スクリプトを実行しているパスが知りたくなったのです。

・・・まぁ、結局必要なかったんですけどね。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する