我正在手动执行 powershell 任务,即以管理员身份打开 powershell 并在 powershell 中执行命令pushd D:\PowerShellTry
和命令
.\FileWatcher.ps1
。我写了一个
myScript.bat
通过bat文件自动完成手动任务。下面是我为我的 bat 文件编写的自动化代码:
powershell -Command "& {Start-Process powershell.exe -Verb RunAs; pushd D:\PowerShellTry; .\FileWatcher.ps1}"
但它不起作用。我怎样才能正确地做到这一点?
powershell -Command "Start-Process -Verb RunAs powershell.exe '-NoExit pushd D:\PowerShellTry; .\FileWatcher.ps1'"
注意使用嵌入式 '...'
引用和
-NoExit
开关来保持提升的会话打开,因此您可以检查脚本的输出。至于
你尝试了什么:
"& { ... }"
来调用通过
-Command
(
-c
) 参数传递给 PowerShell CLI 的代码 - 只需直接使用
"..."
,如上所示。(旧版本的
& { ... }
是必需的,但这已被更正。)
;
Start-Process
之后放置 powershell.exe -Verb RunAs
,您就在那里终止了命令,异步启动交互式提升的 PowerShell 会话;随后的
pushd ...; .\...
命令然后在original,非提升的会话中执行。
powershell.exe
启动的-Verb Runas
实例,如上所示,就像外部powershell.exe
调用一样(-Command
CLI参数是暗示,就像Start-Process
'-ArgumentList
参数一样)。