我有一个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
我想运行这两个命令,但我不确定如何。它运行一个命令。我尝试在命令之间添加分号,但它没有用。
答案 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