win10 本生没有 sudo,每次需要管理员操作的时候都需要在开始处右键点击使用管理员模式运行,因此想为 win10 增加一个 unix-like 的 sudo。
封面《Riddle Joker》

前言

sudo 是 unix-like 的一种提权操作,使得普通用户可以以 root 用户的权限做一些操作。放在 windows 里面就是以管理员权限运行。但是 win10 里面没有这种命令,需要打开 powershell 的时候就以管理员模式打开,这样往往会很麻烦,而且重新打开后会没有之前的记录。如果有个 sudo 命令会减少很多操作。

方法一 powershell 函数(不推荐)

参考 stack overflow 的方法,提示使用 Start-Process 函数

1
notepad $PROFILE

编辑 $PROFILE 文件,如果不存在则会提示创建。往里面新增一下语句

1
2
3
function sudo {
Start-Process @args -verb runas
}

缺点

用此方法存在以下缺点

  • 每次都需要进行 UAC 验证,没有像 Linux 的缓存只需要输第一遍密码,用此方法每次都需要验证
  • 每次都会新建窗口,每次都会新建一个窗口来执行命令,不利于 DEBUG。(可以试一试 npm install,我手速慢没截到)
  • 只支持 powershell 不支持 cmd

方法二 使用 gsudo(推荐)

在搜索方法的时候,我发现许多人推荐 gsudo,使用后发现 gsudo 比较符合我的要求。
在此我使用 winget 安装,当然也可以去 release 下载安装文件

1
winget install gsudo


使用 gsudo 无需新建窗口,同时可以通过配置来实现权限缓存。

1
gsudo config CacheMode auto


参考文献

How to sudo on powershell on Windows

Start-Process

gsudo