将PowerShell脚本作为计划任务运行时出错

时间:2020-06-10 10:10:28

标签: powershell

我正在尝试创建PowerShell脚本以按计划任务下载并执行.exe文件。我的脚本是:

$argument = "-Command `"& '(New-Object System.Net.WebClient).DownloadFile(‘https://webserver/file.exe’,’%TEMP%\file.exe’); Start-Process “%TEMP%\file.exe'""
$action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument $argument
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$trigger = New-ScheduledTaskTrigger -AtStartup
$task = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger Register-ScheduledTask "ExampleTask" -InputObject $task -Force

如果我尝试运行脚本,则会出现以下错误:

At C:\Users\HP\Desktop\1\1.ps1:3 char:50
+ $principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" ...
+                                                  ~~
Unexpected token 'NT' in expression or statement.
At C:\Users\Folder\script.ps1:5 char:118
+ ... rigger Register-ScheduledTask "ExampleTask" -InputObject $task -Force
+                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~
The string is missing the terminator: ".
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : UnexpectedToken

原因以及如何解决?

1 个答案:

答案 0 :(得分:0)

似乎是带有参数字符串的奇数格式,Register-ScheduledTask不在单独的行上。

我建议使用here字符串:

$argument = @'
-Command "& '(New-Object System.Net.WebClient).DownloadFile(‘https://webserver/file.exe’,’%TEMP%\file.exe’); Start-Process %TEMP%\file.exe'"
'@
$action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument $argument
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$trigger = New-ScheduledTaskTrigger -AtStartup
$task = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger
Register-ScheduledTask "ExampleTask" -InputObject $task -Force