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