
■ 実行フォルダ
PowerShellでスクリプトを作っていると、スクリプトの場所(フォルダ)を知りたいと思うことがあります。というか、ありました。
どうすれば良いかと思ったのですが、良い方法があるようです。
まず、スクリプトはここ(D:¥bbb)に置いておきます。

このスクリプト(test.ps1)には、下記の処理を記述します。
Write-Host $MyInvocation.MyCommand.Path
実行すると、パスが返ってきましたが。

・・・でも、欲しいのはこれではない。
■ 親フォルダ
さて、スクリプトの実行フォルダが欲しいという事は「実行しているスクリプトが存在するフォルダ」が必要な場合が多いと思います。
なので、スクリプトをひと工夫します。
Write-Host (Split-Path $MyInvocation.MyCommand.Path -Parent)
Split-Path コマンドレットに -Parent を付けて実行することで、親フォルダだけを表示させました。

うん、これでOKですね。
■ 後書き
PowerShellで、あるファイルをネットワーク上の別のサーバーにコピーする処理を作っていました。
本当は、PowerShellのスクリプトもコピー先に置いておきたかったのですが、セキュリティの関係で実行時にエラーが出たりして動きません。手動で実行(対話型)なら、表示される警告に応答するだけで良かったのですが、今回はWindowsのタスクでスケジュール実行させたかったので、困ってしまいます。
本当は、電子署名を付けるのが王道なのでしょうが、社内のバックアップ用スクリプトにそんなことをすると、かえって今後の維持管理が難しくなります。
しょうがないので、スクリプトはPowerShellを起動するサーバーに置くことにしました。とか色々とやっている中で、スクリプトを実行しているパスが知りたくなったのです。
・・・まぁ、結局必要なかったんですけどね。
投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end ---
スポンサードリンク


