给你的Powershell做一个“sudo”
前言
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。
开始行动
在Windows系统上sudo对应的就是管理员权限了。
一般使用Powershell时,并不会管理员启动,当执行需要权限的命令(比如net start mysql),就需要以管理员打开新的窗口。
为了一步到位,这里给powershell创建一个alias
-> sudo
来运行需要管理员权限的命令。
在文档目录中(在powershell
执行$profile
即可输出此文件路径),新建文件夹WindowsPowerShell
,新建文件Microsoft.PowerShell_profile.ps1
。
此文件是在启动Powershell时执行的脚本。set-alias 在退出后就会失效,所以放到启动脚本中。
追加如下代码,然后重启Powershell窗口。
function _sudo {
$ss = "$args ; pause"
Start-Process powershell -Verb runAs -ArgumentList $ss
}
set-alias -name sudo -value _sudo
保存后发现无法加载,因为默认不加载外部脚本,管理员权限下 powershell 运行:
set-ExecutionPolicy RemoteSigned
REMOTESIGNED 脚本可以运行。这是 Windows Server 2012 R2 中的默认执行策略。 要求从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)具有受信任的发布者的数字签名。 不要求你在本地计算机上编写的脚本(不是从 Internet 下载的)具有数字签名。 如果脚本已被取消阻止(比如通过使用 Unblock-File cmdlet),则运行从 Internet 下载但未签名的脚本。 存在运行来自 Internet 之外的源的未签名脚本和已签名但却是恶意的脚本的风险。
完成设置后,输入sudo会打开新的窗口执行命令:
有时候我们又希望直接输入命令打开新窗口,继续追加如下代码,重启powershell
Function _su {Start-Process -verb runas "C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe"}
Set-Alias su _su
输入su命令后会直接弹出一个新的具有管理员权限的powershell
附录
cmd 提权:
runas /user:[email protected] cmd
doskey sudo=runas /user:{$username} cmd
快速进入命令行的方法
如何从你的文件夹里快速打开命令行?请看下面
1.将鼠标置于指定文件的空白处,按住Shift键的同时右击鼠标,这时在出来的右键菜单里会出现一个”打开命令行” 的菜—单选项,也有可能是“在此处打开Powershell窗口(s)”。这个具体和电脑个体设置有关。
2.直接在指定目录的地址栏中输入cmd
,即可进入命令行模式,同理输入powershell也可以
3.安装Windows Terminal ,在应用商店即可下载。(在地址栏输入wt也可以快速调出,但是不会定位到当前目录)