本文将介绍如何在 PowerShell 中使用 sudo 命令实现临时提权,以及一些其它的提权方法。

何为 sudo?为何使用 sudo 来实现临时提权?

sudo 是一种计算机程序,用于类 Unix 操作系统如 BSD、Mac OS X 以及 GNU/Linux,该计算机程序可以让用户透过安全的方式使用特殊的权限执行程序(通常为操作系统的超级用户)。

在 Windows 系统中虽有类似的提权方法(本文末尾将介绍这些方法),但大多都存在使用不便的缺点。

好在我们可以通过安装开源的 “sudo” 脚本,实现便捷的临时提权操作,大大提升用户的使用体验。

使用 Scoop 安装 sudo 脚本

Scoop 是一个 Win­dows 包管理工具。

本文使用 Scoop 安装 sudo 脚本。

安装 Scoop

设置 PowerShell 执行策略

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

使用官方脚本一键安装 Scoop

Invoke-RestMethod get.scoop.sh | Invoke-Expression

若想进一步了解 Scoop 的使用技巧,推荐阅读 P3TERX 的这篇文章

安装 sudo 脚本

安装 Scoop 后,再安装 sudo 脚本就十分便捷。

只需要执行以下命令

scoop install sudo

使用 sudo 命令实现临时提权

使用 Scoop 安装完 sudo 脚本后,你只要在需要管理员权限执行的命令前加上 sudo 即可。例如:

sudo Get-Service ssh-agent | Set-Service -StartupType Automatic

细心的读者可能会发现上方执行的命令有些不对劲,紧随 sudo 命令后的 Get-Service 并不需要提权运行,而需要提权运行的 Set-Service 位于 | 之后。

在 Linux 中,这样使用 sudo 命令肯定是行不通的,管道符号后的命令实际上并没有提权运行。

但本文中所安装的 sudo 脚本是支持这种使用方法的,你只需要在一连串命令的开头加上一个 sudo 即可。这是因为该 sudo 脚本实际上是以管理员权限新建了一个进程,在新进程中执行 sudo 命令后跟随的所有命令后返回。

PowerShell 中其它的提权方法

Start-Process

官方文档

Start-Process -FilePath "powershell" -Verb RunAs

Runas

官方文档

runas /user:Administrator powershell