Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShellを使用してスケジュールされたタスクを作成および管理する方法は?

ほとんどのユーザーと管理者はtaskschd.mscを使用します Windowsでスケジュールされたタスクを作成および管理するためのグラフィカルインターフェイスコンソール。ただし、さまざまなスクリプトや自動化されたフローでは、PowerShell機能を使用してスケジュールされたタスクを作成する方がはるかに便利です。この記事では、PowerShellを使用してWindowsスケジューラタスクを作成および管理する方法を示します。

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

PowerShellを使用してスケジュールされたタスクを作成および管理する方法は?

ヒント 。以前は、組み込みのコンソールツール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スクリプトは、指定されたスケジュールで実行されます。コンピューターで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を使用してスケジュールされたタスクを作成および管理する方法は?

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)

PowerShellを使用してスケジュールされたタスクを表示および実行する方法

次のコマンドを使用して、Windowsでアクティブなスケジュールされたすべてのタスクを一覧表示できます。

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 :

PowerShellを使用してスケジュールされたタスクを作成および管理する方法は?

このタスクは無効にできます:

Get-ScheduledTask CheckServiceState | Disable-ScheduledTask

タスクを有効にするには:

Get-ScheduledTask CheckServiceState | Enable-ScheduledTask

タスクを(スケジュールを待たずに)すぐに実行するには、次のコマンドを実行します:

Start-ScheduledTask CheckServiceState

PowerShellを使用してスケジュールされたタスクを作成および管理する方法は?

タスクスケジューラライブラリからタスクを完全に削除するには:

Unregister-ScheduledTask -TaskName CheckServiceState

タスクの起動元のユーザー名や互換モードなどを変更する必要がある場合は、 Set-ScheduledTaskを使用してください。 コマンドレット:

$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_settings

Set-ScheduledTask: No mapping between account names and security IDs was done」というエラーが表示された場合 」正しいユーザー名を入力していることを確認してください。

PowerShellを使用してスケジュールされたタスクを作成および管理する方法は?

XMLファイルを介してスケジュールされたタスクをエクスポートおよびインポートする方法

PowerShellを使用すると、スケジュールされたタスクの現在の設定をテキストXMLファイルにエクスポートできます。したがって、任意のタスクのパラメーターをエクスポートして、タスクを他のコンピューターに展開できます。タスクは、タスクスケジューラGUIとPowerShellコンソールの両方からエクスポートできます。

StartupScriptという名前のタスクをStartupScript.xmlファイルにエクスポートするコマンドは次のとおりです。

Export-ScheduledTask StartupScript | out-file c:\tmp\StartupScript.xml

PowerShellを使用してスケジュールされたタスクを作成および管理する方法は?

Export-ScheduledTaskコマンドレットはPowerShell2.0では使用できないため、Windows 7 / Windows Server 2008 R2では、組み込みツールの schtasksを使用することをお勧めします。 タスク設定をエクスポートし、結果をテキストファイルにリダイレクトするには:

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"
>

この例では、タスクの実行に使用されるアカウントの資格情報を使用していることに注意してください。クレデンシャルが指定されていない場合、それらはジョブに保存されていないため、インポート時に要求されます。


  1. Windows のタスク スケジューラでスケジュールされたタスクを遅らせる方法

    私たちの多くは、タスク スケジューラを使用して基本的なタスクやプログラムを実行したことがあるかもしれません。しかし、それだけではありません。タスク スケジューラを使用すると、スケジュールされたタスクの実行を遅らせることもできます。 タスクを遅らせる機能は便利で、非常に簡単に使用できます。基本的に、これは Windows の起動時間を改善するために行われます。遅延タスクをスケジュールすることで、Windows の起動にかかる時間が以前より大幅に短縮されます。 それでは、このステップバイステップ ガイドを使用して、Windows のタスク スケジューラでスケジュールされたタスクを遅らせる方法を

  2. Gmail でタスクを作成して操作する方法

    タスクやリマインダーを作成および管理するために、多くの場合、サードパーティ製のツールが使用されていました。それを行うことができるすべてのApp Storeで利用可能な何百ものWebおよびモバイルアプリケーションがあります.そして、仕事を正しく行うという点で、それぞれが他よりも優れています。 ただし、メール クライアントに関して言えば、タスクの作成と管理に関しては Gmail が最適です。同時に、Outlook 上のものや Mac 上の Apple Mail 統合など、他の同様のタスク アプリケーションがあります。しかし、Gmail はウェブベースのプラットフォームであり、両者を圧倒しました。