给你的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会打开新的窗口执行命令:

image-20201114173152782

在这里插入图片描述

有时候我们又希望直接输入命令打开新窗口,继续追加如下代码,重启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也可以

image-20201114173854864

image-20201114173917127

3.安装Windows Terminal ,在应用商店即可下载。(在地址栏输入wt也可以快速调出,但是不会定位到当前目录)

image-20201114174133879


文章作者: Czq
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 !
评论
  目录