【发布时间】:2018-12-24 18:41:24
【问题描述】:
如果我将它粘贴到 Powershell 蓝色窗口中,它会运行良好并启动程序
Start-Process “C:\Program Files (x86)\Engine Pro\engine.exe” -ArgumentList "#21#”;
但如果我尝试在脚本中运行相同的命令,run.ps1 脚本,该脚本从 Windows 中的计划任务启动,它什么也不做
PowerShell.exe -windowstyle hidden -NoProfile -ExecutionPolicy Bypass C:\run.ps1
它与 -ExecutionPolicy 绕过有关吗?我是否也必须在脚本中有执行策略?我真的不知道那是什么。我知道 -windowstyle hidden 是什么,但是 -NoProfile -ExecutionPolicy Bypass 我不知道为什么会这样,只是在另一个页面上找到了它,但是除了从脚本中启动的程序之外,它都可以正常工作。
谢谢。
【问题讨论】:
-
你的命令使用了Unicode(非ASCII)双引号;除非您将
*.ps1文件保存为 UTF-8 with BOM(或 UTF-16LE),否则 PowerShell 会误解它。 -
根据您的 PowerShell 版本(低于 6/core)默认为
-Command而不是-File,因此您可能需要使用PowerShell.exe -windowstyle hidden -NoProfile -ExecutionPolicy Bypass -File C:\run.ps1 -
整个脚本都与“”一起工作,但是当我尝试从脚本中启动一个程序时,它只是没有注意到。我使用“”并使用编码程序 ATOM 1.33.1 x64 编辑文件。添加 -File 什么也没做。我以为它可能是 BitDefender,但我把它关掉了,程序没有启动。我尝试从脚本启动notepad.exe,但也没有启动。不知道发生了什么。
-
愚蠢的我,这是 & 符号。我已经在数百个线程上看到了它。
& Start-Process "C:\Program Files (x86)\Engine Pro\engine.exe" -ArgumentList "#21#";工作,花了一段时间才弄明白。谢谢大家