我有一个使用PowerShell ISE手动运行的PowerShell脚本。 但是,使用pipe理员凭据作为计划任务运行时,任务不会以预期的结果运行。
剧本:
$request=new-object System.Net.WebClient $request.DownloadFile("...url...", "C:\path\to\file.csv")
pipe理员用户对脚本和正在写入的文件夹都具有完全控制权。 该URL存在并在合理的时间内(不到一秒)作出响应。
如果我手动运行任务的状态是0x41301(“当前正在运行”),直到我最终结束它。 我已经使用这两种方法设置了任务:
C:\path\to\PS.PS1
C:\windows\system32\WindowsPowerShell\v1.0\powershell.exe
-noninteractive -command "C:\path\to\PS.PS1"
使用选项1,任务历史logging显示它已经打开notepad.exe的一个实例,但它永远不会终止它。 使用选项2完成任务,但不会下载/创build文件。
我已经使用Set-ExecutionPolicy Unrestricted
因为这不是一个签名的脚本。
我该如何解决这个问题?
当您运行脚本文件而不是脚本块时,您应该使用的参数是-File。
另外,使用Set-ExecutionPolicy cmdlet设置执行策略并不能保证在该上下文中执行脚本。 有效的执行策略可能会被组策略(GPO)覆盖。 要强制执行该文件,请使用-ExecutionPolicy参数
您正在查找的命令如下
powershell.exe -ExecutionPolicy Unrestricted -NonInteractive -NoProfile -File c:\path\ps.ps1
这些参数的更多信息可以在这里find。
你能否通过以下方式确认所有范围的执行策略:
Get-ExecutionPolicy -List
如果将LocalMachine策略设置为RemoteSigned ,则应该能够具有如下的任务定义:
开始: C:\ Windows \ System32 \ WindowsPowerShell \ v1.0
运行: C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe -NoLogo -File c:\ path \ to \ ps.ps1
您尝试运行的脚本文件不是本机信任的文件。 在文件path之前使用&符号运行命令:
Powershell.exe -ExecutionPolicy Unrestricted -Command { & 'C:\path\to\PS.PS1' }
其他PowerShell启动参数可以在PowerShell.exe命令行帮助中find 。
虽然你可能已经find了解决你的问题的办法,但是我仍然会发布这个笔记来让别人受益。 我遇到了类似的问题。 我基本上使用不同的域帐户来testing和比较。 任务运行得很好,选中“运行用户是否login”。
有几件事要牢记,并确保:
检查提供的链接,希望你或其他人可以从这个信息中受益。 注意安全。
https://technet.microsoft.com/en-us/library/cc722152.aspx