PowerShell PS1 スクリプトをタスクスケジューラで使用する
2010年8月23日 コメントする
Exchange 2010 では、メールボックス移動、移行を行う際に、日時指定ができずEMCからは即実行しか行うことができません。。
(Exchange 2007 では可能だったのですが・・・)
また、イベントログを抜き出すShellや、もろもろ管理用のスクリプトなどをついでにPowershellに移行して、
タスクスケジューラで実施しようとしました。
PowerShellをタスクスケジューラで利用する際に、少し戸惑いましたので備忘録を兼ね、記載しておきます。
(しょぼすぎです。。)
以下、Exchange用Power Shell コマンドレットを含むPS1スクリプトを、Windowsタスクスケジューラから実行する際の
設定内容です。
1) Exchange管理シェルを起動し、以下のコマンドを入力します。
Get-executionpolicy |
実行結果から、”Remotesigned”が返されれば外部のスクリプトが実行可能な状態です。
上記以外の文字列が返される場合は、以下のコマンドレットを使用し、設定を変更します。
Set-ExecutionPolicy RemoteSigned |
2) タスクスケジューラを開き、[タスクの新規作成]をクリックします。
3) [タスク]の[全般]にて、タスクの実行時に使うアカウントにExchange管理者権限を持つアカウントを設定します。
※この設定箇所にて、真夜中等にタスクを実行させる場合は、「ユーザーがログオンしているかどうかにかかわらず実行する」を有効にします。
これを有効にすることで、ユーザーがログオンしていなくても内部的に実行してくれます。
4) 操作タブにて、以下の値を設定します。
プログラム/スクリプト
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
引数の追加(オプション)
-PSConsoleFile "D:\Program Files\Microsoft\Exchange Server\V14\Bin\ExShell.psc1" -Command ".’実行したいファイルのフルパス.ps1′"
タスクスケジューラはほかにも設定が多々ありますが、今回上記引数で少しつまってしまったので、本ブログではこの設定箇所についてのみ記載します。
その他タスクスケジューラについては、以下のURLを参考いただければと思います。