Register-ScheduledTask报“参数不正确”错误排查求助
解决Register-ScheduledTask报错“参数不正确”问题
问题定位
你的代码里有两个核心问题触发了报错:
- 任务名称含非法字符:
$taskName = "Start/Stop HIP"中的/属于Windows计划任务名称禁止使用的特殊字符(禁用字符包括/ \ : * ? " < > |),直接导致参数校验失败。 - System账户与RunLevel参数冲突:指定
-User "System"时,-RunLevel "Highest"是无效参数——System账户本身已拥有最高权限,无需额外配置RunLevel,这会引发参数不匹配错误。
修正后的代码
$iscreateMATATask=$true Function createMATATask { param( # 替换非法字符,改用下划线规避冲突 $taskName = "Start_Stop HIP", $taskDescr = "Starts and stops airwall to facilitate launching MATA", $taskScript = "C:\com-code-client\Start_Stop_HIP.ps1" ) $exists = Get-ScheduledTask | Where-Object {$_.TaskName -eq $taskName} if($exists) { Unregister-ScheduledTask -TaskPath "\" -TaskName $taskName -Confirm:$false } $action = New-ScheduledTaskAction -Execute "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe" -Argument "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file `"$taskScript`"" $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -RunOnlyIfNetworkAvailable # 移除无效的RunLevel参数 Register-ScheduledTask -User "System" -TaskName $taskName -TaskPath "\" -Action $action -Description $taskDescr -Settings $settings } if($iscreateMATATask){ createMATATask }
额外优化说明
- 将
Where-Object {$_.TaskName -like $taskName}改为-eq,避免模糊匹配误删其他任务。 - 给脚本路径添加双引号(
"$taskScript"),防止路径含空格时出现执行异常。
内容的提问来源于stack exchange,提问作者jakebake
相关产品推荐
相关产品推荐

