(1/5)PowerShell基礎解説の後編。Frameworkクラスの利用方法について解説する。PowerShell(以下PowerShell)の基本的な機能を理解していただくことを目的としている。前編では、まずPowerShellの基本的な概念を理解していただくという意味で、より手軽に扱える対話型シェルを中心に解説を進めた。PowerShellの最終的な目標はスクリプティング技術によるシステム運用の自動化である。具体的には、最初にスクリプトを実行するための基本的な手順を理解したうえで、PowerShellにおける変数や制御構文、関数など基礎的な構文の解説を行っていく。PowerShellスクリプトの基本スクリプトとはいっても、その実体はファイルとして保存されたコマンドの集合にすぎない。前回も紹介した次のコードをスクリプト化するには、ただ単にこれをテキスト・エディタで入力し、ファイルとして保存すればよい。*Get-ChildItemコマンドレットの処理結果をリスト形式に整する(Begin.ps1)ここでは、スクリプトのファイル名を「Begin.ps1」としておこう。ファイルのベース名には任意の名前を指定できるが、PowerShellスクリプトの拡張子は「.ps1」としなければならない。拡張子を「.ps1」としたスクリプト・ファイルをエクスプローラなどからダブルクリックしてもPowerShellが自動起動するわけでは「ない」点には注意が必要である(試してみれば分かるように、「.ps1」ファイルはデフォルトでメモ帳によって開かれる)。従来多くのスクリプティング実行環境では、スクリプト・ファイルをダブルクリックすれば自動的にコードを実行できたため、PowerShellのこの仕様は一見、不便であるように思われるかもしれない。従来のこのような挙動は、往々にしてセキュリティ上の問題となることが多かった。スパム・メールなどに添付されてきたスクリプト・ファイルをエンドユーザーがダブルクリックしてしまった場合、そのまま任意のコードが実行されてしまう可能性があった。PowerShellではユーザーが「.ps1」ファイルをダブルクリックしても単にメモ帳が開くだけである。これにより、PowerShellから明示的にスクリプト・ファイルを呼び出さない限り、こうした悪意あるスクリプトが意図せずに実行される可能性を最小限に抑えることができる。スクリプト・ファイルの実行方法ではPowerShellスクリプトを実際に実行してみよう。繰り返しになるが、PowerShellでは「.ps1」ファイルのダブルクリックではスクリプトを起動することができないので、PowerShell上から明示的に呼び出す必要がある。この場合にも、従来のコマンド・プロンプトに慣れている方にとってはいくつか注意しなければならない点がある。実行に関する注意1—PowerShellはカレント・フォルダを検索しない例えば先ほど作成した「Begin.ps1」をカレント・フォルダ(ここでは「C:\Windows\Temp」)に配置しているものと仮定する。その場合、従来のコマンド・プロンプトであれば、単にファイル名を指定するだけでスクリプト・ファイルが呼び出され、実行されるはずだ。これは、コマンド・プロンプトがコマンド・パスの検索先として、デフォルトでカレント・フォルダを含めているためだ。PowerShellの場合はどうだろう。ファイルとして認識されません。用語を確認し、再試行してください。Begin.ps1<<<<このように、エラーとなり、ファイル名が認識されていないことが確認できる。結論からいってしまうと、PowerShellではスクリプト・ファイルを実行する場合に必ず絶対パスか相対パス形式でファイルを指定しなければならない。C:\Windows\Temp\Begin.ps1のように指定する必要がある(拡張子「.ps1」は省略しても構わない)。実行に関する注意2—スクリプト実行ポリシーを設定することもっとも、これだけではまだ「.ps1」ファイルを実行することはできない。絶対パス/相対パスを指定して再び実行してみると、先ほどとはまた異なるエラーメッセージに遭遇することになるはずだ。具体的なメッセージは以下のとおりである。about_signing」と入力してヘルプを参照してください。PowerShellではセキュリティ上の理由から、デフォルトでスクリプトの実行が無効に設定されている。そのため、スクリプト・ファイルを実行するためには、あらかじめPowerShellのスクリプト実行ポリシーを変更しておく必要がある。実行ポリシーを変更するにはSet-ExecutionPolicyコマンドレットを利用する。RemoteSignedSet-ExecutionPolicyコマンドレットを実行してから再びスクリプト・ファイルを実行してみると、今度は確かにスクリプト・ファイルが呼び出され、正しく実行されることが確認できるはずだ。Microsoft.PowerShell.Core\FileSystem...(後略)...スクリプト・ファイルを正常に呼び出すことができた例Set-ExecutionPolicyコマンドレットで指定可能な実行ポリシーには以下のようなものがある。通常、スクリプトを開発/実行する環境においては、実行ポリシーとして「RemoteSigned」を選択しておくことをお勧めする。「AllSigned」がより安全ではあるが、すべてのスクリプトに証明書が必要となるため、特に自分でスクリプトを開発するような局面では適切とはいえない。「Unrestricted」は名前のとおり、一切の制約を課さない実行ポリシーであり、すべてのスクリプトを無条件に実行することができる。通常、特別な理由がない限りはUnrestrictedの利用は避けるべきだ。以上、PowerShellにおけるスクリプトの実行方法を理解したところで、ここからはPowerShellにおける基本的な構文について紹介していく。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。