今日はPowerShellのお話。その中でも特に基本的な内容です。
実際に使ってみて、ああ、そうかと思うところがいくつかあったのでまとめます。
まずはPowerSellとは、
Windows OS用のコマンドシェルで、コマンドプロンプトより細かにWindows OSやアプリケーションを制御できるもの。今では(これからも)GUIから設定はできずPowerShellのみで設定できるものもあり、Windowsのシステムを管理する上でとても重要な役割を持っています。
このPowerShell、Windows Server 2008 R2 以降標準で搭載されています。
2008等でもインストールすれば使う事ができます。
では基本編スタート。
1.コマンドレットと呼ぶ
コマンドプロンプトではコマンド、PowerShellはコマンドレットと呼びます。
2.コマンドレットは大文字と小文字を区別しない
Get-Dateというように合わせて使う事もできます。
3.コマンドプロンプトでおなじみのコマンドがエイリアスで使える
コマンドプロンプトであった「Dir」とPowerShellの「Get-Childeitem」は同じ
コマンドプロンプトとコマンドと同じ動きをするコマンドレットがあります。
ちなみにipconfigといったコマンドも普通に動きます。
4.コマンドレットををまとめて一連の処理にしたり繰り返し処理ができる
{}で囲ったスクリプトブロックの中に;で区切ったいくつかのステートメント
を書くことができます。
例えば if(条件)
{スクリプトブロック}
else
{スクリプトブロック}
または for(ループ条件)
{スクリプトブロック}
5.コマンドレットに使うファイルパスをドラックアンドドロップで追加できる
ファイルのパスを入力するときにエクスプローラーからPowerShellエディタに
ドラックアンドドロップで持ってくることができます。
入力する手間が省けるので地味にうれしいです。
6.PowerShellをスクリプトとして実行することができる
PowerShellを実行するスクリプトファイルは拡張子 .ps1を使う
7.実行ポリシー(セキュリティポリシーの設定)がある (今日のメイン)
ポリシー設定はexecutionpolicyの設定値で制御されている。
Windows Server 2012R2では既定でスクリプトの実行が許可されている。
現在の設定を確認するために Get-ExecutionPolicy を実行すると
RemoteSined (発行元が署名していれば実行可能)になっています。
ちなみにWindows Server 2012までは既定で実行できないようになっています。
Windows 7で確認すると
Restricted (実行できるスクリプトありません)になっていました。
この場合、対話モードでのみ実行が可能になります。
さて、そのPowerShellですが実行するときに注意が必要な時があります。
それは他者から提供されたスクリプトを実行するときです。
実は、実際にPowerShellスクリプトをダウンロードしてきて実行したかったのですが署名がなかったようで実行ができませんでした。
この場合どうするか
設定を変えるには Set-ExecutionPolicy Unrestrected とたたくだけ。
Unrestrected は制限なしです。
詳しくはこちらにて
さて、これでPowerShellのスクリプトを動かすことができました。
Unrestrectedは制限なしで実行できてしまうのでセキュリティ上は有効にしておくことが好ましくないので使う時以外は設定を戻しておいたほうがよいですね。
PowerShellスクリプトファイルは便利な反面、やりようによってはシステムの設定を変えて(壊して)しまう危険なものでもあるので、ExecusionPolicyという設定で悪いプログラムを実行しないように制御することができます。
Tech TIPS:WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する - @IT
余談ですが、なぜこの設定を変更したかと言いますとNanoServerのセットアップで使うWimファイルをVHDに変換するスクリプトをダウンロードしてきましたが動かすことができなかったのが発端です。。。