对于标准用户,有一些选项可以以管理员身份(或任何其他用户)运行,但是,即使以管理员身份登录,某些功能也需要“提升”运行。
在Windows gui上,只需右键单击.exe
并选择run as Administrator
或什至提升'cmd'或'powershell'。
如何在Windows核心上获得提升的特权?
答案 0 :(得分:1)
通常,要在Windows上以编程方式调用具有高程的可执行文件(以管理员身份运行),请使用Start-Process
cmdlet和-Verb RunAs
。
这同样适用于pwsh.exe
(PowerShell Core 可执行文件),因此在最简单的情况下,您可以编写:
# Open a new console window with PowerShell Core running with admin privileges.
Start-Process -Verb RunAs pwsh
如果您希望将其包装在一个便捷功能中,该功能也更健壮且在Windows上是跨版本 (在Windows中也可以使用) PowerShell):
function Enter-AdminPSSession {
Start-Process -Verb RunAs (Get-Process -Id $PID).Path
}
# Optionally also define a short alias name:
# Note: 'psadmin' is a nonstandard alias name; a more conformant name would be
# the somewhat clunky 'etasn'
# ('et' for 'Enter', 'a' for admin, and 'sn'` for session)
Set-Alias psadmin Enter-AdminPSSession
如果您希望该功能也可以跨平台(也可以在类似Unix的平台上使用):
function Enter-AdminPSSession {
if ($env:OS -eq 'Windows_NT') {
Start-Process -Verb RunAs (Get-Process -Id $PID).Path
} else {
sudo (Get-Process -Id $PID).Path
}
}
重要:由于涉及的cmdlet /实用程序,
在 Windows 上,新会话总是在 new 控制台窗口中打开。
Administrator:
)中在 Unix (Linux,macOS)上,新会话总是在相同控制台(终端)窗口中打开。
whoami
是一种快速的测试方法(在管理会话中返回root
);更好的解决方案是修改prompt
函数以在提示字符串中反映管理会话。如果您还希望能够在新会话中运行命令并有选择地自动关闭命令,则需要做更多的工作。
如果您download script Enter-AdminPSSession.ps1
(MIT许可的Gist),则可以运行以下命令:
# Example: Synchronously run an MSI installer with elevation
# and exit on completion.
Enter-AdminPSSession -Exit { Start-Process msiexec -Args '/qn /i package.msi' }
# Check for success via $LASTEXITCODE
if ($LASTEXITCODE -ne 0) { Throw "Installation failed." }
此外,脚本:
使用[admin]
确保呼叫会话的当前位置(工作目录)也是提升的会话的当前位置。