我在这里做什么?我不断收到
Register-ScheduledTask: The parameter is incorrect.
我尝试了不同的组合但同样的问题!我在 WinServer2012 上运行 PowerShell 4 并作为 System.这在 PS7 和 PS5 上运行良好。
$taskname = "anyname"
$action = New-ScheduledTaskAction -Execute $sysprepCommand -Argument $sysprepParameters
$principal = New-ScheduledTaskPrincipal -RunLevel Highest -UserId SYSTEM
New-ScheduledTask -Action $action -Principal $principal | Register-ScheduledTask -TaskName $taskname -Force | Start-ScheduledTask | Unregister-ScheduledTask -Confirm:$false
cmdlet 似乎已更改,但文档没有这么说。这就是我最终所做的。
任务中存在的
-Principal $principal
似乎未被Register-ScheduledTask
识别。请注意,Register-ScheduledTask
可以接受 -TaskName
。只是不是一个有 -Principal
的任务。
$taskname = "myTask"
$action = New-ScheduledTaskAction -Execute $myCommands -Argument $myArgs
Register-ScheduledTask -TaskName $taskname -Action $action -RunLevel 'Highest' -User 'SYSTEM' -Force | Start-ScheduledTask | Unregister-ScheduledTask -Confirm:$false
对我来说,问题在于工作名称,我的工作名称有一个“:”..
Example:
$jobname ='test: job'
修复就是删除
:
参数
-Principal $principal
正确无误。但是,对于 2012er 系统,如果您想使用 ServiceAccount 而不是 UserAccount,则需要添加 -LogonType ServiceAccount
。
我的环境示例:
$ComputerName = $env:Computername
$Action1 = New-ScheduledTaskAction -Execute "msiexec.exe" -Argument "/I AzureConnectedMachineAgent.msi /l*v $($ComputerName)_azcmagent_update.log /qn"
$Action2 = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "Disable-ScheduledTask -TaskName 'azcmagent'"
$actions = @($Action1, $Action2)
$Trigger = New-ScheduledTaskTrigger -Weekly -WeeksInterval 4 -DaysOfWeek "Saturday" -At 10AM
$taskPrincipal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$ScheduledTask = New-ScheduledTask -Action $actions -Trigger $trigger -Description $TaskDescription -Principal $taskPrincipal
Register-ScheduledTask -TaskName $TaskName -InputObject $ScheduledTask
希望这有帮助:)