以管理员身份打开powershell,使用bat文件在powershell中运行命令

问题描述 投票:0回答:1

我正在手动执行 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}"
但它不起作用。我怎样才能正确地做到这一点?

windows powershell batch-file cmd powershell-4.0
1个回答
3
投票
powershell -Command "Start-Process -Verb RunAs powershell.exe '-NoExit pushd D:\PowerShellTry; .\FileWatcher.ps1'"
注意使用嵌入式 

'...'

 引用和 
-NoExit
 开关来保持提升的会话打开,因此您可以检查脚本的输出。

至于

你尝试了什么

  • 请注意,没有理由使用

    "& { ... }"

     来调用通过 
    -Command
     (
    -c
    ) 参数传递给 PowerShell CLI 的代码 - 只需直接使用 
    "..."
    ,如上所示。
    (旧版本的
    CLI 文档 错误地建议 & { ... }
     是必需的,但这已被更正。)

  • 通过在

    ;
    Start-Process
    之后放置
    powershell.exe -Verb RunAs
    ,您就在那里终止了命令,异步启动交互式提升的 PowerShell 会话;随后的 
    pushd ...; .\...
     命令然后在 
    original,非提升的会话中执行。

      相反,使用提升运行的命令必须作为参数
    • 传递给使用powershell.exe启动的
      -Verb Runas
      实例,如上所示,就像外部
      powershell.exe
      调用一样(
      -Command
      CLI参数是暗示,就像
      Start-Process
      '
      -ArgumentList
      参数一样)。
      
      
© www.soinside.com 2019 - 2024. All rights reserved.