column

Kompiraの機能 Windowsでリモートスクリプトを実行する(その2)

Windowsでリモートスクリプトを実行する(その1)では、Kompiraからスクリプトジョブを利用してWindows機でバッチファイルを実行しました。
今回の記事ではWindows機でPowerShellスクリプトを実行してみましょう。

※本記事ではWindows Servver 2012 R2(PowerShell version 4)で動作確認をしております。

 
PowerShellスクリプトとは

歴代のWindowsにはcommand.com/cmd.exeといったコマンドラインツールが付属し、いわゆるMS-DOS時代からのバッチ実行が出来るようになっていました。これを補強する意味でWindows98からWindows Script Host(WSH)が提供されましたが、セキュリティ面での問題が指摘されるに至って、広く普及しませんでした。
そこで自社OSのシステム管理や自動化を行うための新世代シェル/プログラミング言語としてPowerShellを発表しました。
PowerShellは多くのコンポーネント(コマンドレット)を組み合わせたタスクで構成されます。

 
実行ポリシーの変更

本記事ではWinRMでの接続が出来ており、Windows機への接続に必要なノード情報、アカウント情報も用意されている前提です。出来ていない場合にはWindowsでリモートスクリプトを実行する(その1)を参照して準備してください。

システム保護のためにOSの初期設定の段階では、PowerShellスクリプトの実行が制限されている場合があります。特にWindows Server 2012 以前のOSでは、デフォルトでスクリプトファイルの実行ができないようにポリシーが設定されています。このポリシーを変更するには、 Set-ExecutionPolicy というコマンドレットを使用します。

これに”RemoteSigned”を指定した場合、ローカルで作成されたスクリプトは無条件で実行できますが、ネットワークから入手したスクリプトは署名が無ければ実行できません。(Windows Server 2012 R2 はこの設定がデフォルト)。

※実行ポリシーの種類

Restricted すべてのスクリプトの実行禁止 (規定値) 対話型モードでのみ使用できる
AllSigned 信頼できる発行元が署名したスクリプトのみ実行可能
RemoteSigned ダウンロードしたスクリプトは信頼できる発行元が署名した場合にのみ実行可能
Unrestricted すべてのスクリプトが実行可能

スクリプトを実行できるように、ポリシーを変更します。管理者権限で PowerShell を起動し、以下のコマンドを実行してください。

 
スクリプトの実行

ここでは”スクリプトジョブ”型の”PowerShellスクリプトの実行”という名前のオブジェクトを作成します。

Windowsでバッチファイルを実行させる場合拡張子を設定する必要があるので、”拡張子”の欄に”ps1″と入力してください。

PowerShellスクリプトの実行

適当に引数を指定して実行してみます。

実行画面

 

上記のように、バッチファイル(bat)と同様に実行できる事がわかります。
Microsoft社も管理系のツールはPowerShellで実装することを表明しており、バッチ(batファイル)よりも適用範囲が多いため、Windows機の管理をする場合には大変有用です。