PowerShellを使用してスケジュールされたタスクを作成および管理する方法は?
ほとんどのユーザーと管理者はtaskschd.msc
を使用します Windowsでスケジュールされたタスクを作成および管理するためのグラフィカルインターフェイスコンソール。ただし、さまざまなスクリプトや自動化されたフローでは、PowerShell機能を使用してスケジュールされたタスクを作成する方がはるかに便利です。この記事では、PowerShellを使用してWindowsスケジューラタスクを作成および管理する方法を示します。
ScheduledTasks PowerShellモジュールは、Windows 10 / WindowsServer2016でスケジュールされたタスクを管理するために使用されます。モジュール内のコマンドレットを次のように一覧表示できます。
Get-Command -Module ScheduledTasks
- Disable-ScheduledTask
- Enable-ScheduledTask
- Export-ScheduledTask
- Get-ClusteredScheduledTask
- Get-ScheduledTask
- Get-ScheduledTaskInfo
- New-ScheduledTask
- New-ScheduledTaskAction
- New-ScheduledTaskPrincipal
- New-ScheduledTaskSettingsSet
- New-ScheduledTaskTrigger
- Register-ClusteredScheduledTask
- Register-ScheduledTask
- Set-ClusteredScheduledTask
- Set-ScheduledTask
- Start-ScheduledTask
- Stop-ScheduledTask
- 登録解除-ClusteredScheduledTask
- 登録解除-ScheduledTask
ヒント 。以前は、組み込みのコンソールツール
schtasks.exe
Windowsでスケジューラジョブを作成および管理するために使用されました。 WindowsPowerShellを使用したスケジュールされたタスクの作成
PowerShellの最新バージョン(Windows Server 2012 / Windows8のPowerShell3.0以降)では、 New-ScheduledTaskTriggerを使用できます。 およびRegister-ScheduledTask スケジュールされたタスクを作成するためのコマンドレット。
起動中(または特定の時間)に実行するスケジュールされたタスクを作成し、PowerShellスクリプトまたはコマンドを実行する必要があるとします。 StartupScript1という名前のスケジュールされたタスクを作成しましょう。このタスクでは、PowerShellスクリプトファイルC:\ PS\StartupScript.ps1を毎日午前10時に実行する必要があります。タスクは、SYSTEMアカウントで昇格された特権([最高の特権で実行]チェックボックス)を使用して実行されます。
$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript1.ps1"
Register-ScheduledTask -TaskName "StartupScript1" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
タスクが正常に作成されると、ステータス「準備完了」が表示されます。
PowerShellスクリプトは、指定されたスケジュールで実行されます。コンピューターでPowerShell実行ポリシーを有効にしてPS1スクリプトの実行を禁止している場合は、–Bypass
を使用して、スケジュールされたタスクからPowerShellスクリプトを実行できます。 パラメータ。
新しいタスクを作成するときに次のコードを使用します:
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument “-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\PS\StartupScript.ps1"
$Trigger= New-ScheduledTaskTrigger -AtStartup
ユーザーがログオンしたときにタスクを実行する場合:
$Trigger= New-ScheduledTaskTrigger -AtLogon
taskschd.msc
を開きます コンソールを開き、タスクスケジューラライブラリに新しいスケジューラタスクがあることを確認します。
Powershell 2.0(Windows 7、Windows Server 2008 R2)では、PowerShellからスケジュールされたタスクを作成するには、 Schedule.Serviceを使用できます。 COMインターフェイス(またはPowerShellバージョンを更新)。この例では、起動時にPowerShellスクリプトを含む特定のファイルを実行するスケジュールされたタスクを作成します。タスクは
NT AUTHORITY\SYSTEM
で実行されます 特権。
$TaskName = "NewPsTask"
$TaskDescription = "Running PowerShell script from Task Scheduler"
$TaskCommand = "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe"
$TaskScript = "C:\PS\StartupScript.ps1"
$TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file $TaskScript"
$TaskStartTime = [datetime]::Now.AddMinutes(1)
$service = new-object -ComObject("Schedule.Service")
$service.Connect()
$rootFolder = $service.GetFolder("\")
$TaskDefinition = $service.NewTask(0)
$TaskDefinition.RegistrationInfo.Description = "$TaskDescription"
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true
$triggers = $TaskDefinition.Triggers
#https://msdn.microsoft.com/en-us/library/windows/desktop/aa383915(v=vs.85).aspx
$trigger = $triggers.Create(8)
次のコマンドを使用して、Windowsでアクティブなスケジュールされたすべてのタスクを一覧表示できます。
特定のタスクに関する情報を取得するには:
このタスクは無効にできます:
タスクを有効にするには:
タスクを(スケジュールを待たずに)すぐに実行するには、次のコマンドを実行します:
タスクスケジューラライブラリからタスクを完全に削除するには:
タスクの起動元のユーザー名や互換モードなどを変更する必要がある場合は、 Set-ScheduledTaskを使用してください。 コマンドレット:
「
PowerShellを使用すると、スケジュールされたタスクの現在の設定をテキストXMLファイルにエクスポートできます。したがって、任意のタスクのパラメーターをエクスポートして、タスクを他のコンピューターに展開できます。タスクは、タスクスケジューラGUIとPowerShellコンソールの両方からエクスポートできます。
StartupScriptという名前のタスクをStartupScript.xmlファイルにエクスポートするコマンドは次のとおりです。
Get-ScheduledTask -TaskPath | ? state -ne Disabled
Get-ScheduledTask CheckServiceState| Get-ScheduledTaskInfo
LastRunTime : 4/7/2021 10:00:00 AM
LastTaskResult : 267011
NextRunTime : 4/8/2021 10:00:00 AM
NumberOfMissedRuns : 0
TaskName : CheckServiceState
TaskPath : \
PSComputerName :
Get-ScheduledTask CheckServiceState | Disable-ScheduledTask
Get-ScheduledTask CheckServiceState | Enable-ScheduledTask
Start-ScheduledTask CheckServiceState
Unregister-ScheduledTask -TaskName CheckServiceState
$task_user = New-ScheduledTaskPrincipal -UserId woshub\j.abrams' -RunLevel Highest
$task_settings = New-ScheduledTaskSettingsSet -Compatibility 'Win8'
Set-ScheduledTask -TaskName CheckServiceState_PS -Principal $task_user -Settings $task_settingsSet-ScheduledTask: No mapping between account names and security IDs was done
」というエラーが表示された場合 」正しいユーザー名を入力していることを確認してください。XMLファイルを介してスケジュールされたタスクをエクスポートおよびインポートする方法
Export-ScheduledTask StartupScript | out-file c:\tmp\StartupScript.xml
schtasks /query /tn "NewPsTask" /xml >> "c:\tmp\NewPsTask.xml"
スケジュールされたタスク設定をXMLファイルにエクスポートした後、GUI、SchTasks.exe、またはPowerShellを使用して任意のネットワークコンピューターにインポートできます。
登録-スケジュールされたタスク コマンドレットは、XMLファイルからタスク設定をインポートして登録するのに役立ちます。
Register-ScheduledTask -Xml (Get-Content “\\mun-fs01\public\NewPsTask.xml” | out-string) -TaskName "NewPsTask"
PowerShell 2.0(Windows 7 / Server 2008 R2)では、schtasksツールを使用してタスクをインポートする方が簡単です。最初のコマンドは、新しいタスクを作成します。 2番目はすぐに実行します(トリガーがアクティブになるのを待たずに)。
schtasks /create /tn "NewPsTask" /xml "\\Srv1\public\NewPsTask.xml" /ru corp\skrutapal /rp Pa$$w0rd
>
schtasks /Run /TN "NewPsTask"
この例では、タスクの実行に使用されるアカウントの資格情報を使用していることに注意してください。クレデンシャルが指定されていない場合、それらはジョブに保存されていないため、インポート時に要求されます。
-
Windows のタスク スケジューラでスケジュールされたタスクを遅らせる方法
私たちの多くは、タスク スケジューラを使用して基本的なタスクやプログラムを実行したことがあるかもしれません。しかし、それだけではありません。タスク スケジューラを使用すると、スケジュールされたタスクの実行を遅らせることもできます。 タスクを遅らせる機能は便利で、非常に簡単に使用できます。基本的に、これは Windows の起動時間を改善するために行われます。遅延タスクをスケジュールすることで、Windows の起動にかかる時間が以前より大幅に短縮されます。 それでは、このステップバイステップ ガイドを使用して、Windows のタスク スケジューラでスケジュールされたタスクを遅らせる方法を
-
Gmail でタスクを作成して操作する方法
タスクやリマインダーを作成および管理するために、多くの場合、サードパーティ製のツールが使用されていました。それを行うことができるすべてのApp Storeで利用可能な何百ものWebおよびモバイルアプリケーションがあります.そして、仕事を正しく行うという点で、それぞれが他よりも優れています。 ただし、メール クライアントに関して言えば、タスクの作成と管理に関しては Gmail が最適です。同時に、Outlook 上のものや Mac 上の Apple Mail 統合など、他の同様のタスク アプリケーションがあります。しかし、Gmail はウェブベースのプラットフォームであり、両者を圧倒しました。