启动管理shell然后执行多个命令

时间:2015-01-15 22:45:40

标签: powershell

我有一个powershell脚本和一个启动它的bat文件。我希望bat文件打开powershell,然后让powershell以提升的权限启动另一个shell,然后运行两个命令。第一个命令是更改目录,第二个命令是启动powershell脚本。

到目前为止,我有这个:

powershell -NoProfile -ExecutionPolicy ByPass -Command "& {Start-Process PowerShell -Verb RunAs -ArgumentList '-NoExit -NoProfile -ExecutionPolicy Bypass cd %~dp0 .\App\Deploy-Application.ps1}'"

这是我遇到问题的部分:

cd %~dp0 .\App\Deploy-Application.ps1

我想运行这两个命令,但我不确定如何。它运行一个命令。我尝试在命令之间添加分号,但它没有用。

1 个答案:

答案 0 :(得分:1)

做了一个快速测试,这就是我的工作:

TEST.BAT

cd %~dp0
powershell -NoProfile -Command ".\test.ps1"

Test.ps1

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{   
    $arguments = "-noprofile & '" + $myinvocation.mycommand.definition + "'"
    Start-Process powershell -Verb runAs -ArgumentList $arguments
    Break
}

Write-Host "Rawr"

Pause

如果我运行批处理文件,它会打开powershell脚本,然后检查当前窗口是否以管理员身份运行,如果没有,则以管理员身份重新打开脚本。

之后它会在我的屏幕上显示Rawr。

在您的情况下,您可以放置​​

而不是写入主机
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{   
    $arguments = "-noprofile & '" + $myinvocation.mycommand.definition + "'"
    Start-Process powershell -Verb runAs -ArgumentList $arguments
    Break
}

cd <Your directory to change to here>
<run command here>

Pause