Windows Server 2008 R2 PowerShell 脚本手动运行,但不是作为计划任务运行

Aei*_*sor 5 powershell windows-server-2008-r2

我有一个使用PowerShell ISE手动运行的 PowerShell 脚本。但是,当使用管理员凭据作为计划任务运行时,该任务不会以预期的结果运行。

剧本:

$request=new-object System.Net.WebClient
$request.DownloadFile("...url...", "C:\path\to\file.csv")
Run Code Online (Sandbox Code Playgroud)

管理员用户对脚本及其写入的文件夹具有完全控制权。URL 存在并在合理的时间内(少于一秒)作出响应。

如果我手动运行任务,状态为 0x41301(“当前正在运行”),直到我最终结束它。我已经使用这两种方法设置了任务:

  1. 启动程序: C:\path\to\PS.PS1
  2. 启动程序:C:\windows\system32\WindowsPowerShell\v1.0\powershell.exe带有附加选项-noninteractive -command "C:\path\to\PS.PS1"

使用选项 1,任务历史记录显示它已打开 notepad.exe 的一个实例,但从未终止它。使用选项 2 可以完成任务,但不会下载/创建文件。

我使用过,Set-ExecutionPolicy Unrestricted因为这不是签名脚本。

我该如何解决这个问题?

小智 6

当您运行的是脚本文件而不是脚本块时,您应该使用的参数是 -File。

此外,使用 Set-ExecutionPolicy cmdlet 设置执行策略并不能保证脚本在该上下文中执行。有效的执行策略可能会被组策略 (GPO) 覆盖。要在执行文件时强制执行此操作,请使用 -ExecutionPolicy 参数

你要找的命令如下

powershell.exe -ExecutionPolicy Unrestricted -NonInteractive -NoProfile -File c:\path\ps.ps1
Run Code Online (Sandbox Code Playgroud)

可以在此处找到这些参数的更多信息。