Windows ServerでPowerShellをはじめる前の7つの豆知識。ExecusionPolicyの設定など

今日はPowerShellのお話。その中でも特に基本的な内容です。

実際に使ってみて、ああ、そうかと思うところがいくつかあったのでまとめます。

 

 

まずはPowerSellとは、

Windows OS用のコマンドシェルで、コマンドプロンプトより細かにWindows OSやアプリケーションを制御できるもの。今では(これからも)GUIから設定はできずPowerShellのみで設定できるものもあり、Windowsのシステムを管理する上でとても重要な役割を持っています。

このPowerShellWindows Server 2008 R2 以降標準で搭載されています。

2008等でもインストールすれば使う事ができます。

Download Windows Server 2008 用の Windows PowerShell 2.0 および WinRM 2.0 (KB968930) from Official Microsoft Download Center

 

では基本編スタート。

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 を実行すると

  f:id:tetsunari_jp:20150529224913p:plain

  RemoteSined (発行元が署名していれば実行可能)になっています。

 

 ちなみにWindows Server 2012までは既定で実行できないようになっています。

  Windows 7で確認すると

  f:id:tetsunari_jp:20150529232053p:plain

  Restricted (実行できるスクリプトありません)になっていました。

  この場合、対話モードでのみ実行が可能になります。

 

さて、そのPowerShellですが実行するときに注意が必要な時があります。

それは他者から提供されたスクリプトを実行するときです。

実は、実際にPowerShellスクリプトをダウンロードしてきて実行したかったのですが署名がなかったようで実行ができませんでした。

この場合どうするか

設定を変えるには Set-ExecutionPolicy Unrestrected とたたくだけ。

Unrestrected は制限なしです。

 

詳しくはこちらにて

Windows PowerShell の機能

 

さて、これでPowerShellスクリプトを動かすことができました。

 

Unrestrectedは制限なしで実行できてしまうのでセキュリティ上は有効にしておくことが好ましくないので使う時以外は設定を戻しておいたほうがよいですね。

 

PowerShellスクリプトファイルは便利な反面、やりようによってはシステムの設定を変えて(壊して)しまう危険なものでもあるので、ExecusionPolicyという設定で悪いプログラムを実行しないように制御することができます。

 

 Tech TIPS:WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する - @IT

 

余談ですが、なぜこの設定を変更したかと言いますとNanoServerのセットアップで使うWimファイルをVHDに変換するスクリプトをダウンロードしてきましたが動かすことができなかったのが発端です。。。