タスク スケジューラーを使用して PowerShell スクリプトを自動化する方法

Microsoft Windows タスク スケジューラーを使用すると、特定の時間または特定の条件が満たされたときに、プログラムやPowerShell スクリプトを自動的に起動することができます。 また、電子メールの送信や、特定のメッセージの表示もスケジュールできます。 このブログでは、ローカル コンピューターにインストールされたソフトウェアに警告を発する PowerShell スクリプトを Task Scheduler から実行する方法を紹介します。

PowerShell スクリプトを使用してスケジュール タスクを作成することもできます。 2550>

  • Create Tasks with Task Scheduler
  • Modify or Delete Scheduled Tasks
  • Create Scheduled Tasks with PowerShell Scripts.

Creating Tasks with Task Scheduler

“Windows+R” と押してタスクスケジューラを開き、開いたウィンドウに “taskschd.msc” とタイプしてタスクの作成を開始する方法について学習する。

次に、次の手順を実行します。 タスクの作成」をクリックし、新しいタスクの名前と説明を入力します。 管理者権限で実行する場合は、「最高の権限で実行する」にチェックを入れます。

2.トリガータブに切り替え、[新規作成]ボタンをクリックします。 ここでは、タスクを実行するためのトリガーとなる条件を指定します。 たとえば、スケジュール、ログオン時、アイドル時、起動時、または特定のイベントが発生したときに実行させることができます。 ここでは、新しいソフトウェアがインストールされたときにタスクが実行されるようにしたいので、ドロップダウンメニューから「On an event」を選び、Log settingsから「Application」を選択する。 Source “パラメータを空白にし、EventIDを “11707 “に設定する。 OK」をクリックして変更を保存します。

3. 「アクション」タブに移動し、「新規作成…」をクリックします。 ここでは、トリガー条件が満たされたときに実行されるアクションを指定することができます。 たとえば、電子メールを送信したり、メッセージを表示したりすることができます。 今回の場合、プログラムを起動したいので、実行したいPowerShellスクリプトを作成し、「ps1」という拡張子で保存する必要があります。 このスクリプトは、インストールされたソフトウェアに関するイベントの詳細を含むアラートを送信します。

PowerShell スクリプトをスケジュールするには、次のパラメーターを指定します:

  • Action: Start a program
  • Programscript: powershell
  • Add arguments (optional): -File

Click “OK” to save your changes.

4.Conditions タブでは、タスクを実行すべきかを決定する条件と、トリガを指定することが可能です。 我々の場合、このタブのデフォルト設定のままにしておきます。

5. また、「設定」タブでは、スケジュールされたタスクの追加パラメータを設定することができます。

6. タスクが完全に設定されると、システムはサービスアカウントのパスワードの入力を要求してきます。 このアカウントは「バッチジョブとしてログオンする」権利を持っている必要があることに注意してください。 パスワードを入力し、「OK」をクリックしてタスクを保存します。
7.タスクスケジューラが正しく機能するためには、ジョブスケジューラサービスが起動するように設定する必要があります。 サービス.msc」を実行します。 サービスの一覧から、Task Schedulerを探し、ダブルクリックします。

Microsoft Windows Server に新しいソフトウェアがインストールされるたびに、インストール時刻、ソフトウェアの名前、インストールした人のユーザー ID (SID) の詳細が電子メールで通知されます。

スケジュールタスクの変更または削除

既存のタスクを変更するには、リストでタスクを右クリックして、プロパティを選択して必要な設定を編集して OK をクリックします。

PowerShell スクリプトによるスケジュール タスクの作成

タスク スケジューラーを使用してタスクを作成する方法がわかったので、PowerShell を使用してスケジュール タスクを作成する方法を確認します。 タスクは毎日午前 10 時に起動し、ここにある PowerShell スクリプトを実行し、Active Directory サイトのグループ メンバーシップの変更を監視する必要があるとします。 Import-Module TaskScheduler」コマンドを実行してモジュールをインストールし、次のスクリプトを使用して、GroupMembershipChanges.ps1 という PowerShell スクリプトを毎日午前 10 時に実行するタスクを作成します:

Import-Module TaskScheduler $task = New-Task$task.Settings.Hidden = $trueAdd-TaskAction -Task $task -Path C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe –Arguments "-File C:\Scripts\GroupMembershipChanges.ps1"Add-TaskTrigger -Task $task -Daily -At "10:00"Register-ScheduledJob –Name "Monitor Group Management" -Task $task

Windows PowerShell 4.0 (Windows Server 2012 R2 以上) には Task Scheduler モジュールが含まれていないため、このスクリプトは機能しません。 その代わり、PowerShell 3.0 および 4.0 では、スケジュールされたタスクを作成するための新しいコマンドレット、New-ScheduledTaskTrigger および Register-ScheduledTask が導入され、スケジュールされたタスクをより簡単に、より便利に作成することができるようになりました。 それでは、システムアカウント(SYSTEM)を使って、毎日午前10時にスクリプトを実行するタスクを作成してみましょう。 このタスクは、昇格した特権を持つアカウントによって実行されます。

$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily # Specify the trigger settings$User= "NT AUTHORITY\SYSTEM" # Specify the account to run the script$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript.ps1" # Specify what program to run and with its parametersRegister-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force # Specify the name of the task

新しいタスクを作成する際に便利な他のトリガー オプションは次のとおりです。

  • -AtStartup – Windows 起動時にタスクをトリガー。
  • -AtLogon -ユーザーがサインイン時にタスクをトリガー。 RepetitionIntervalパラメータを使用すると、繰り返し間隔を設定できます。

  • -Weekly – 週に一度、タスクをトリガーします。

これらのコマンドレットを使用して、タスク スケジューラー ツールで行ったような「イベント時に」実行をトリガーすることができないことに注意してください。 これは、Task Scheduler ではなく PowerShell を使用することの本当の欠点です。

Conclusion

お分かりのように、Task Scheduler または PowerShell を使用してスケジュール タスクを簡単に作成することが可能です。 しかし、スケジュールされたタスクに不適切な変更を加えると、サービスの中断やサーバーのパフォーマンスの低下を招く可能性があることを忘れないでください。 したがって、スケジュールされたタスクのすべての変更を追跡することが不可欠です。

Jeff は、Netwrix のグローバル ソリューション エンジニアリング担当ディレクターです。 彼は、長年にわたって Netwrix のブロガー、講演者、プレゼンターを務めています。 Netwrix ブログでは、ライフハック、ヒント、およびシステム管理体験を劇的に向上させるトリックを共有しています。

コメントを残す

メールアドレスが公開されることはありません。