PowerShell スクリプトは、繰り返し行う作業を手作業で減らすことができます。 あらかじめ設定した時刻や指定した時間間隔で頻繁にスクリプトを実行している場合、スクリプトを繰り返し実行することにうんざりしているのではないでしょうか。 そこで、Windows のタスクスケジューラーを活用して、スクリプトの実行を自動化することができます。 毎日、毎週スクリプトを実行する手間を省くことができます。
1.Task Scheduler GUIを使用してPowerShellスクリプトをスケジュールする
2.Task Schedulerを使用してPowerShellスクリプトをスケジュールする
3.Power Schedulerを使用してスクリプトをスケジュールする
4.Power Schedulerを使用してスクリプトをスケジュールするには2つの方法があります。PowerShell を使用してタスクスケジューラーから PowerShell スクリプトをスケジュールする
Method 1: Task Scheduler を使用して PowerShell スクリプトをスケジュールする
タスクスケジューラーを開く (「管理ツール」または「Windows + R」キーを押して「実行」を開き、「taskschd.msc」をタイプします。).)
1.Task Schedulerを開く -> Task Scheduler Library -> Create Task
2.General タブで、スケジューラー名と、そのタスクが何のために作られたかなどの説明を設定することができます。
Available security options explained below.
- Specify the user on behalf of the task will be run.
- The task should run .タスクの実行を指定することができます。 これは、â €Run Whether the user is logged on notâ €™ とラベル付けされたラジオボタンを選択することで行えます。 このラジオボタンが選択されている場合、タスクは対話的に実行されません。
- Run whether user is logged on or not を選択すると、チェックボックスDo not store password を選択したかどうかにかかわらず、アカウントの資格情報を入力するように要求される場合があります。
- タスクが昇格した特権を必要とする場合、「最高特権で実行」オプションを選択します。
3.Trigger タブに切り替え、新規ボタンをクリックします。 ここでは、タスクを起動する条件を設定します。
- タスクを開始するタイミングを指定できます。 たとえば、タスクを開始するドロップダウンメニューを選択することにより、スケジュールに従って、起動時、ログオン時、または特定のイベントが発生したときにタスクを実行させることができます。
- [詳細設定] では、タスクを遅延させる、タスクを繰り返す、指定した期間以上実行したらタスクを停止する、有効期限を設定できます。
- Delay task for up to: ランダムな遅延を追加し、タスクはその日の正確な時刻に開始しません。
- Repeat task every – 各タスクの繰り返しの時間間隔
- For a duration of – タスクの繰り返しの時間
- Stop if it runs longer than – タスクが予定時間より長く実行されるか終了しない場合、指定時間に達すると自動的にタスクが停止されます。
- Expire – 指定した時間が経過すると、スケジュールは実行されません。
- Delay task for up to: ランダムな遅延を追加し、タスクはその日の正確な時刻に開始しません。
4.続いて「アクション」タブを開き、「新規」ボタンをクリックしてください。
- Add arguments では、-File パラメーターがデフォルトであるため、スクリプトのパスを指定するだけです。 たとえば、Office 365 ユーザーの MFA ステータス レポートをエクスポートするスクリプトをスケジュールするつもりです。
PowerShell
1
|
c:ps1
|
パスに空白がある場合は、引用符で囲みます。
5.Configuration 後は、タスクを実行するかどうかを決定する条件を指定します。
6.Settings タブで、タスクの実行を制御するための追加の詳細設定を行います。
Finally, click Ok to create a scheduled script.
Scheduled script will run as expected according to your schedule without any issue.Scheduled script is performed as an expected to your schedule without an problem.If you have been selected in this task. スクリプトの実行を確認したい場合は、タスク名を右クリックして[実行]をクリックします。
Automate PowerShell Script from Task Scheduler with Parameters
PowerShell スクリプトにパラメータをつけてスケジュールするには、以下の書式を使用します。â â â â
PowerShell
1
|
スクリプトパス-…Param 1 Value1 -Param2 「Value 2」
|
例えば、次のような場合です。 PowerShellスクリプトの一つを自動化しようと思います。 Export Office 365 Users MFA status report
スケジュール中に、次のように明示的にクレデンシャルをパラメータとして渡すことができます。
PowerShell
1
|
C:\Ίταμμαps1 -UserName “XXX XX” -Password ****
|
パラメータ値に空白がある場合、値は引用符で囲む必要があります。
switch パラメータを渡す場合、以下の構文が使用できます。
PowerShell
1
|
 C.\Ίταμμα για για για για γιαps1 -EnabledOnly
|
上記のスクリプトは、MFAステータスが有効になっているOffice 365ユーザーのMFAステータスをエクスポートするスクリプトです。 ここで、-EnabledOnlyはスイッチパラメーターです。
Office 365関連のその他のPowerShellスクリプトについては、O365Reports.comブログを参照してください。
方法2:PowerShellを使用してタスクスケジューラーからPowerShellスクリプトをスケジュールする
GUI の代わりに、PowerShell コマンドレットを使用して、PowerShellスクリプトを自動化するスケジュール タスクを作成することができます。
1.Define time for scheduler
2.Set Actions to be performed during execution
3.Save scheduler
Define Time for Scheduler:
New-SchdeuledTaskTrigger はスケジュール タスク トリガー オブジェクトを作成します。 このコマンドレットを使用すると、タスクの開始時刻を指定したり、日単位または週単位でタスクを複数回開始させることができます。
PowerShell
1
|
$Time=New-に変更しました。ScheduledTaskTrigger -At 4.00PM -Once
|
上の cmd は、午後 4 時に開始し 1 回実行するスケジュールされたタスク トリガーを作成します。
PowerShell
1
|
 $Time=New-」は、次のとおりです。ScheduledTaskTrigger -At 4.00PM -Daily -DaysInterval 2
|
上の cmd は、2 日ごとに 4PM で開始するスケジュール タスク トリガーを作成します
実行中に実行されるアクションを設定:
New-SchdeuledTaskAction はタスク スケジューラがタスクを実行するときに実行するアクションを表わします。 1つのタスクには、1つのアクションまたは最大32のアクションを設定できます。
このコマンドでPowerShellを開き、ディレクトリをC:/Scriptsに変更して、MFAStatus.ps1スクリプトを実行します。
Save Scheduler:
Register-ScheduledTask はローカルコンピュータ上にスケジュールタスクを保存します。
PowerShell
1
|
Register->ScheduledTask -TaskName “Schedule MFA Status Report” -Trigger $Time -Action $Action -RunLevel Highest
|
上記のコマンドは、ルートフォルダに「Schedule MFA Status Report」という名前でスケジュールタスクを保存しています。 保存されたタスクは、$Action および $Time 変数で指定された、事前に作成されたアクションとトリガーの値を使用します。
Use Cases:
Task Scheduler を使用すると、PowerShell スクリプトをスケジュールして定期的に実行させることができます。 これにより、毎日、毎週、毎月のように手動でスクリプトを実行する必要がなくなります。 インターネット上には、スケジューラに適したスクリプトが多数公開されています(スクリプト内に保存する代わりに、パラメータとして認証情報を渡すことができます)。 ここにいくつかの例を挙げました。
- Track Office 365 users’ login history – Keep audit log for more than 90 days
- Periodic report of Office 365 users MFA status
- Schedule Office 365 users’ last logon time report
- Schedule Office 365 Mailbox Permission report
- Schedule Office 365 users’ license report
- Scheddule(スケジューリング)※1 Distribution Group membership PowerShell script
- Schedule Dynamic Distribution Group Membership PowerShell script
- Periodic report on Office 365 users’ last activity report
- Schedule Office 365 users’ login history PowerShell report
- Export shared mailbox permission report periodically
- schedule non-Mailbox permission report
- Schedule non->Dynamic Activity Report
- Scheduled Office 365 users’ last activity report
- Periodic Report on PowerShell script
- Office 365 users’ password expiry report
Schedule PowerShell script
このブログでは、Office 365のユーザーのパスワードの有効期限を報告します。 タスクスケジューラーを使用してPowerShellスクリプトを自動化する方法を紹介しました。あなたは、GUIとPowerShellのどちらでスケジューリングを行うのが好きですか?