fcm*_*fcm 4 windows powershell cmd administrator powershell-core
标准用户有几个选项可以以管理员(或任何其他用户)身份运行,但是,即使以管理员身份登录,某些功能也需要“提升”运行。
在 Windows gui 上,只需右键单击 a.exe并选择run as Administrator甚至提升“cmd”或“powershell”。
如何在 Windows 核心上获得提升的权限?
通常,要在 Windows 上以编程方式调用具有提升(以管理员身份运行)的可执行文件,请使用Start-Process带有 -Verb RunAs.
这同样适用pwsh.exe于 PowerShell Core可执行文件,因此在最简单的情况下,您可以编写:
# Open a new console window with PowerShell Core running with admin privileges.
Start-Process -Verb RunAs pwsh
Run Code Online (Sandbox Code Playgroud)
如果您想将其包装在一个在 Windows 上也更健壮和跨版本的便利函数中(也适用于 Windows PowerShell):
function Enter-AdminPSSession {
Start-Process -Verb RunAs (Get-Process -Id $PID).Path
}
# Optionally also define a short alias name:
# Note: 'psa' 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), analogous
# to built-in 'etsn' alias referring to 'Enter-PSSession'
Set-Alias psa Enter-AdminPSSession
Run Code Online (Sandbox Code Playgroud)
如果您希望该功能也是跨平台的(也可以在类 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
}
}
Run Code Online (Sandbox Code Playgroud)
重要提示:由于涉及 cmdlet/实用程序,
在Windows 上,新会话总是在新的控制台窗口中打开。
Administrator: )中在Unix(Linux、macOS)上,新会话总是在同一个控制台(终端)窗口中打开。
whoami是一种快速测试的方法(root在管理会话中返回);更好的解决方案是修改prompt函数以反映提示字符串中的管理会话,就像接下来讨论的预打包解决方案一样。如果您还希望能够在新会话中运行命令并可选择自动关闭它,则需要做更多的工作:
您可以Enter-AdminPSSession从此Gist下载函数,其中:
允许通过脚本块 ( { ... })执行传递命令
默认情况下保持会话打开,以便可以检查命令输出,但您可以选择退出-Exit或-ExitOnSuccess(仅在没有发生错误时关闭会话)。
试图反映通过的命令的整体成功$LASTEXITCODE(即使对于 PowerShell 本地命令,此变量通常未设置);0表示成功。
确保调用会话的当前位置(工作目录)也是提升会话的当前位置。
允许您选择不加载配置文件, -NoProfile
[admin] 在所有平台上,在交互式提升会话中的提示字符串前加上,前缀。
假设您已经查看了链接的 Gist 的源代码以确保它是安全的(我可以亲自向您保证,但您应该始终检查),您可以直接安装Enter-AdminPSSession如下:
irm https://gist.github.com/mklement0/f726dee9f0d3d444bf58cb81fda57884/raw/Enter-AdminPSSession.ps1 | iex
Run Code Online (Sandbox Code Playgroud)
示例调用(假设Set-Alias psa Enter-AdminPSSession已被调用):
psa
Run Code Online (Sandbox Code Playgroud)
psa -NoProfile -ExitOnSuccess { Set-ExecutionPolicy -Scope LocalMachine RemoteSigned }
Run Code Online (Sandbox Code Playgroud)
/etc/sudoers(只有管理员权限才能读取),然后退出:psa -Exit { Get-Content /etc/sudoers }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4631 次 |
| 最近记录: |