为计划任务添加多个操作项

Ars*_*rsh 3 powershell scheduled-tasks powershell-4.0

我创建了一个执行PowerShell脚本的计划任务.脚本从远程服务器提取磁盘信息.脚本和其他组件工作正常.我遇到的问题是我无法找到为此计划任务包含另一个Action项的方法(脚本的这一部分从不同的服务器集中提取一些信息,因此希望将它们放在同一个计划任务中).

我是如何尝试的:

$parlist = @{
  Name = "CloudOnline-DiskReport"
  Trigger = New-JobTrigger -Daily -At "9:15 AM"
  FilePath = "C:\DiskInfo-1stSet.ps1"
  ScheduledJobOption = New-ScheduledJobOption -RunElevated -RequireNetwork -WakeToRun
}

Register-ScheduledJob @parlist

Get-ScheduledJob -Name CloudOnline-DiskReport |
  New-ScheduledTaskAction -Execute "C:\DiskInfo-2ndSet.ps1"
Run Code Online (Sandbox Code Playgroud)

已成功创建计划任务并且DiskInfo-1stSet.ps1工作正常,但未添加另一个Action任务.我试过了很多变种New-ScheduledTaskAction,但都没用.

Ans*_*ers 9

New-ScheduledTaskAction只是创建一个新的动作.您仍然需要将操作分配给任务.试试这个:

Get-ScheduledTask -TaskName 'CloudOnline-DiskReport' | ForEach-Object {
  $actions = $_.Actions
  $actions += New-ScheduledTaskAction -Execute 'C:\DiskInfo-2ndSet.ps1'
  Set-ScheduledTask -TaskName $_.TaskName -Actions $actions
}
Run Code Online (Sandbox Code Playgroud)

如果要在创建任务期间一次添加所有操作,可以这样做(或多或少取自New-ScheduledTask文档的"示例"部分):

$actions   = (New-ScheduledTaskAction –Execute 'foo.ps1'),
             (New-ScheduledTaskAction –Execute 'bar.ps1')
$trigger   = New-ScheduledTaskTrigger -Daily -At '9:15 AM'
$principal = New-ScheduledTaskPrincipal -UserId 'DOMAIN\user' -RunLevel Highest
$settings  = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable -WakeToRun
$task      = New-ScheduledTask -Action $actions -Principal $principal -Trigger $trigger -Settings $settings

Register-ScheduledTask 'baz' -InputObject $task
Run Code Online (Sandbox Code Playgroud)