将 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 AUTHORITYSYSTEM" -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:UsersHPDesktop11.ps1:3 char:50
+ $principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITYSYSTEM" ...
+                                                  ~~
Unexpected token 'NT' in expression or statement.
At C:UsersFolderscript.ps1:5 char:118
+ ... rigger Register-ScheduledTask "ExampleTask" -InputObject $task -Force
+                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~
The string is missing the terminator: ".
+ CategoryInfo          : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken

原因以及如何解决它?

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

我建议使用此处字符串:

$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 AUTHORITYSYSTEM" -LogonType ServiceAccount -RunLevel Highest
$trigger = New-ScheduledTaskTrigger -AtStartup
$task = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger
Register-ScheduledTask "ExampleTask" -InputObject $task -Force

最新更新