PowerShellスクリプトへのショートカットを作成する:Tech TIPS
PowerShellのスクリプトは.ps1というファイルに保存する。.ps1ファイルはデフォルトではメモ帳に関連付けられており、単にショートカットをダブルクリックしてもメモ帳が開くだけである。.ps1ファイルへのショートカットを使ってスクリプトを実行したければ、リンク先にpowershellというコマンド名を追加する。-noexitオプションを指定すると、スクリプトの実行終了後もウィンドウが開いたままになり、結果を確認しやすくなる。
対象ソフトウェア:PowerShell
.ps1ファイルをダブルクリックしてもメモ帳が起動するのはなぜ?
PowerShellを利用すれば、さまざまなシステム管理業務(特に定型的な処理)をスクリプトを使って自動化できる。PowerShellは、バッチコマンドやWSHよりも高度で使いやすい機能を多く備えるため、利用する場面も今後は多くなるだろう。
PowerShellのスクリプトは、「.ps1」という拡張子のファイルに保存することになっているが、デフォルトではこの拡張子はテキストファイルとして扱われる。そのため、エクスプローラ上で.ps1ファイルをダブルクリックしたり、コマンドプロンプトや[ファイル名を指定して実行]で.ps1ファイルを指定したりしても、メモ帳が起動するだけである。もしデフォルトで実行ファイルになっていると、ウイルスとして実行させたり、メールなどに添付して配布/実行させたりといったことが簡単にできてしまうため、このようになっている。
PowerShellスクリプトとして実行したければ、ユーザーが明示的にPowerShellを起動し、スクリプトファイルを指定する必要がある。ただしあらかじめスクリプトを実行できるように、セキュリティ設定を変更しておく必要がある。詳細についてはWindows PowerShellコマンド&スクリプティング入門「1.PowerShellスクリプトの基本」やTech TIPS「PowerShellスクリプトの実行セキュリティポリシーを変更する」を参照していただきたい。
このようなデフォルトの挙動は、セキュリティのためには有用であるが、PowerShellに慣れていないユーザーでは操作に戸惑うかもしれない。よく使うスクリプト(.ps1ファイル)へのショートカットを作成してダブルクリックしても、単にメモ帳が起動するだけで、実行できないからだ。これを解決するには、ショートカットのプロパティを変更して、PowerShellの実行プログラムへのパスを追加すればよい。本Tech TIPSでは、.ps1ファイルへのショートカットを作成する方法について解説する。
手順1――.ps1ファイルへのショートカットを作成する
PowerShellのスクリプトファイル、つまり.ps1ファイルをショートカットとして登録するためには、まず.ps1ファイルへのショートカットを作成する。エクスプローラ上で.ps1ファイルを右クリックして、ポップアップメニューから[ショートカットの作成]を選んでもよいし、[コピー]後に[ショートカットの貼り付け]を実行するか、[新規作成]−[ショートカット]で作成してもよい。
.ps1ファイルへのショートカットのプロパティ
まず.ps1ファイルへのショートカットを作成する。
(1)作成した.ps1ファイルへのショートカット名。
(2)作成した.ps1ファイルのフルパス名。
(3).ps1ファイルの保存されているフォルダのパス名。
このショートカットをダブルクリックすると、単にメモ帳が起動し、リンク先の.ps1ファイルが開かれることを確認しておく。
手順2――リンク先に「powershell」を追加する
次に作成したショートカットの[プロパティ]ダイアログを開き、「リンク先」の文字列(つまり.ps1ファイルのフルパス名)の先頭に、「powershell 」を追加する。つまりpowershell.exeという実行プログラム名を指定し、元の.ps1ファイルをその引数になるように変更する。
リンク先の変更
リンク先のパス名の直前に、「powershell 」という文字列を追加して、powershell.exeコマンドとその引数に変更する。
(1)元のリンク先の直前に「powershell 」という文字列を追加する。「powershell」と元のパス名の間に、空白文字を1つ入れることを忘れないように。
以上で設定は完了である。[OK]ボタンを押すとショートカットの内容が変更され、ショートカットのアイコンもPowerShellのアイコンに変更されているはずである。もう一度プロパティを開くと、「リンク先」は「C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe C:\MyScript\testps.ps1」のように変更されていることが確認できるはずである。これはpowershell.exeの実際のファイルパスに置き換えられたためであるが、もしそうなっていなければ、PowerShellのインストールがうまくいっていない可能性がある。
このようにして作成されたショートカットをダブルクリックすると、PowerShellのウィンドウが開かれ、指定されたスクリプトが実行されているはずである。ただしスクリプトの内容や使用するコンピュータによっては、実行がすぐに終了してしまい、その動作状況を確認できないことがある。スクリプトの実行終了後もPowerShellのウィンドウを開いたままにするためには、上記のリンク先の変更において、単に「powershell 」ではなく、「powershell -noexit 」という文字列を追加すればよい(これはPowerShellの実行ファイルに対して-noexitというオプションを指定している)。
これを実行すると、例えば次のように、スクリプトの実行後もPowerShellのウィンドウが開いたままになり、結果を確認しやすくなる。
-noexitオプション指定時の動作
結果が画面にしか表示されないようなスクリプトの場合は、ショートカットに「powershell -noexit 」と追加すると、このようにスクリプトの終了後もPowerShellのウィンドウが開いたままになり、結果を確認しやすくなる。結果を特定のファイルに保存するものや、タスクで自動実行させるようなスクリプトならば、このような設定は不要だろう。
(1).ps1ファイルへのショートカット名。
(2)スクリプトの実行結果。この例では、スクリプトファイル中には「ps」という1行のコマンドだけを記述しておいた。psはプロセスの一覧を表示させるコマンドである。
(3)スクリプトの実行終了後もこのようにウィンドウが開いたままになり、ウィンドウをスクロールして結果を確認できる。PowerShellを終了するにはexitコマンドを実行する。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.