我想在非管理员命令提示符下以提升的权限调用我的 PowerShell 脚本。 当我使用“以管理员身份运行”手动打开命令提示符并输入以下行时:
powershell -ExecutionPolicy Unrestricted -Command "Start-Process Powershell -Verb RunAs -Wait -ArgumentList '-NoProfile -ExecutionPolicy Unrestricted -File example.ps1 param1'"
我的脚本 PowerShell 脚本运行得很好。
但是,当我在非管理员命令提示符下运行它时,我看到一个 PowerShell 窗口出现一瞬间然后退出。
关于如何解决这个问题有什么想法吗?
通过具有提升权限的批处理文件运行 Powershell 脚本
runas.exe /netonly /noprofile /user:domainadm@domain "powershell.exe -
noprofile -File "C:\Users\...\Desktop\Powershell_scripts\New-
ADuser\.ps1" -verb RunAs"
从具有提升权限的批处理文件运行 Powershell 脚本?
powershell -Command "&{ Start-Process powershell -ArgumentList '-File example.ps1 param1' -Verb RunAs}"
使用提升的权限和传递参数从 cmd 运行 powershell 脚本
PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command "Start-Process -FilePath PowerShell.exe -Verb RunAs -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File "example.ps1 param1"'"
上下文:我的 PowerShell 脚本用于下载 param1 指定的 NSIS 安装程序
在 Windows 上,从非提升控制台启动的提升进程总是在新窗口中运行,在提升进程退出时自动关闭
。-NoExit
放在 -Command
参数之前,这会使提升的 PowerShell 会话保持打开状态,直到您手动退出它,从而允许您检查可能发生的任何错误。在 Windows PowerShell(其 CLI 是
powershell.exe
)中,一个提升的进程以 $env:Windir\System32
作为其工作目录启动(幸运的是,PowerShell (Core) 7+ 现在 preserves 调用者的工作目录) .
example.ps1
确实 not 工作,你应该传递一个 full path 来代替。
# Note the `"$PWD\example.ps1`" part
powershell -ExecutionPolicy Bypass -Command "Start-Process Powershell -Verb RunAs -Wait -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File `"$PWD\example.ps1`" param1'"