それではPowerShellコンソールを使用してみよう。PowerShellコンソールに
Get-ChildItem
と入力し、[Enter]キーを押下すると、カレント・ディレクトリに含まれるファイルとフォルダの一覧が表示される。
PowerShellのコマンドレットは原則として「動詞-名詞」という命名規則に従っており、そのコマンドレットが何をするものであるか分かりやすくなっている。またこの規則のため、いくつかのコマンドレットを知っておくと、ほかのコマンドレット名が推測しやすくなるというメリットもある。
Get-ChildItemコマンドレットはよく使用するコマンドレットであるため、次のようなエイリアス(別名)があらかじめ定義されている。
dir
ls
gci
これらGet-ChildItemのエイリアスを入力しても同じ結果となる。dirやlsはコマンド・プロンプトやUNIXシェルでの同様の動きをするコマンドと同じコマンド名であり、従来のシェルのユーザーにも違和感なく使用できるようになっている。また、gciはコマンドレットの動詞部分と名詞部分の頭文字を並べたものであり(Get-ChildItemの略)、ほかの多くのコマンドレットにも同様の定義が用意されている。
カレント・ディレクトリを移動(変更)するにはSet-Locationコマンドレットを用いる。
Set-Location -path C:\
とすると、カレント・ディレクトリを「C:\」に移動する(Set-Locationのエイリアスはcd、chdir、sl)。
コマンドレットのパラメータ名はすべてハイフン「-」で始まっている。コマンド・プロンプトの外部コマンドでは、パラメータは「/」で始まったり、「-」で始まったり、記号なしだったりと、ばらばらで分かりづらかったが、PowerShellではすべて統一されている。また、「-path」とフルに指定しなくても、「-pat」とだけ指定するのでも可能だ。このようにパラメータ名は全部記述しなくてもパラメータ名が一意に決まる文字まで指定すればよい(Set-Locationにはほかに「-passThru」というパラメータ名があるため、「-p」や「-pa」では不可)。さらによく使われるパラメータに関しては、パラメータ名を指定せず、パラメータの値だけ指定してもよい。例えばSet-Locationにはパスを指定することがほとんどであるため、「-path」は省略可能だ。つまり、
Set-Location C:\
でもよい。
ほかにどのようなコマンドレットがあるかは自分で調べることができる。
Get-Command -CommandType cmdlet
とすると、コマンドレットの一覧が表示される。
これらのコマンドレットの使い方を調べるには、次のようにする。
Get-Help Get-ChildItem
あるいは詳しいヘルプを引くには、
Get-Help Get-ChildItem -detail
などとする。
ここで構文に関して簡単に説明すると、[-Path]のように、[ ]で囲まれているパラメータは省略可能という意味である。また、<string> はパラメータの値の型(種類)である(stringは「文字列」)。<string[]> だと、カンマで区切って複数の値を指定できる(配列の指定が可能)という意味になる。
Get-Helpではほかに、「about_」から始まるヘルプ・トピックを調べることもできる。例えば、エイリアスについての記述があるabout_aliasesを調べるには、
Get-Help about_aliases
とする。
ヘルプ・トピックの一覧は
Get-Help *
で調べることができる。
ヘルプは以上のようにコンソールから調べることもできるが、HTML形式のヘルプ・ファイルも用意されているので、場合に応じて使い分けるとよいだろう。このファイルは「ファイル名を指定して実行」で「hh WindowsPowerShellHelp.chm」と入力するか、あるいはタスク・バーのアイコンを右クリックして表示されるジャンプ・リストから参照できる(ジャンプ・リストはWindows 7/Windows Server 2008 R2でのみ利用可能な機能)。
PowerShellはシェルであるので任意の外部コマンドも当然使用可能だ。例えば
ipconfig
と入力すると、IP構成の情報が表示される。
コンソールの終了は
exit
と入力するか、ウィンドウ右上の閉じるボタンをクリックする。
スクリプトは、デフォルトではセキュリティ上の理由で実行不可(Restricted)になっている。そのため、スクリプトを実行できるようにスクリプト実行ポリシーを変更する必要がある(関連記事参照)。PowerShellコンソールを(UACが有効になっている環境では管理者権限で)起動し、次のようなコマンドを入力する。
Set-ExecutionPolicy RemoteSigned
これによってスクリプトの実行ポリシーがRemoteSigned(リモートのスクリプトの実行にはコード署名が必要、ローカルのスクリプトは無条件で実行可能)になり、スクリプトの実行が可能になる。
例えば、
Get-ChildItem
という1行のテキスト・ファイルをtest.ps1として保存し、PowerShellコンソールでカレント・ディレクトリをtest.ps1のあるフォルダに移動した後、
.\test.ps1
と入力すれば、このスクリプト・ファイルを実行することができる(フルパス指定も可能)。
「ファイル名を指定して実行」からだと、
powershell C:\users\Administrator\documents\test.ps1
のようにする。
ちなみに実行ポリシーを元に戻すには、
Set-ExecutionPolicy Restricted
を実行する。
スクリプトを記述するには、メモ帳などのテキスト・エディタでも問題ないが、PowerShell ISE(Integrated Scripting Environment)を使うのが便利である(ISEを使用するにはPowerShell 2.0と.NET Framework 3.5 SP1以上が必要)。
今回はPowerShellの概要について解説した。次回はPowerShellを使うに当たって最低限知っておかないといけない基礎文法と、PowerShell 2.0で追加された新機能などについて解説する。
「[運用] PowerShell的システム管理入門 ―― PowerShell 2.0で始める、これからのWindowsシステム管理術 ―― 」
Copyright© Digital Advantage Corp. All Rights Reserved.