この機能を見てください
Function Control-Tasks
{
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true)][String]$FolderPath,
[Parameter(Mandatory=$true, ParameterSetname='EnableTask')][Switch]$Enable,
[Parameter(Mandatory=$true, ParameterSetname='DisableTask')][Switch]$Disable,
[Parameter()]$TaskScheduler,
[Parameter()][Switch]$Recursive
)
If ($TaskScheduler -eq $null) {
$TaskScheduler = New-Object -ComObject Schedule.Service
$TaskScheduler.Connect("localhost")
}
$curFolder = $TaskScheduler.GetFolder($FolderPath)
$curFolder.GetTasks(1) | ForEach-Object {
If ($Enable) {
$_.Enabled = $True
Write-Host "Enable $($_.Path)"
}
If ($Disable) {
$_.Enabled = $False
Write-Host "Disable $($_.Path)"
}
}
If ($Recursive) {
$curFolder.GetFolders(1) | ForEach-Object {
If ($Enable) {
Control-Tasks -FolderPath $_.Path -Enable -TaskScheduler $TaskScheduler -Recursive
}
If ($Disable) {
Control-Tasks -FolderPath $_.Path -Disable -TaskScheduler $TaskScheduler -Recursive
}
}
}
}
たとえば、次を呼び出すことで、フォルダ「\ mysql」の下のすべてのタスクを無効にすることができます
Control-Tasks -FolderPath "\mysql" -Disable -Recursive
このコードスニペットは、PowerShellでバッチでスケジュールされたタスクを無効/有効にする方法から来ています。サンプルアーカイブをそこからダウンロードできます。
at.exe
たタスクでは機能しないようです。(例:)AT 09:00 /every:SUNDAY shutdown.exe /r /f /d p:4:1 /c "Reboot via SchTask (AT Job)"
。表示されるエラーは0x80041327です。タスクに以前のバージョンのウィンドウと互換性のないプロパティがあります