有没有什么 "sudo "命令?
我总是在我的Windows电脑上使用非管理员账号工作。有时我需要安装需要管理员权限的程序。由于我主要使用Windows命令提示符,请问有没有类似于Linux终端命令sudo
的Windows命令来升级权限?
我总是在我的Windows电脑上使用非管理员账号工作。有时我需要安装需要管理员权限的程序。由于我主要使用Windows命令提示符,请问有没有类似于Linux终端命令sudo
的Windows命令来升级权限?
runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program
runas /noprofile /user:Administrator cmd
只需运行:
&001
,以管理员身份启动命令shell。
Elevate**** - _“执行一个具有UAC权限的命令。它与sudo
不同,它将执行用户改为Administrator,但它的语法比runas
要简单明了很多,而且它可以保留当前目录,允许使用相对路径。只要启用了UAC,就必须在过程中的某一点上有某种提示。如果你需要完全摆脱提示,你必须禁用UAC。
Elevate缓解的痛点是将一个特定的进程从非特权的shell升级,然后正常进行。如果没有这个,你需要启动一个特权命令提示符右键点击> "以管理员身份运行”,然后再尝试特权命令,这样就不容易被脚本化。如果你的肌肉记忆卡在了sudo上,请使用Doskey创建一个别名:
secpol.msc
或在PATH中的批处理文件:
%wheel ALL=(ALL) NOPASSWD: ALL
Elevate是由Johannes Passing编写的第三方工具。它是一个11kb的下载文件,可移植(不需要安装)。http://code.kliu.org/misc/elevate/
你可以使用runas命令,这个命令有点类似,或者你也可以在SourceForge上的sudo for Windows项目中查看一下,它增加了一个sudo命令。Bob是普通用户,James是管理员。
如果你以Bob的身份登录并使用 “runas james acommand "命令,该命令就会像James一样运行,所以它可以访问James的用户设置,任何用户的更改都会进入James的我的文档和设置文件夹等。因此,如果你在安装一个应用程序,比如说,它将以James的身份安装,而不是以Bob的身份安装。为了防止任何用户能够sudo,你必须定义一个sudoers用户组,该用户组中包含有权限提升使用sudo的普通用户列表。用户在提升之前仍然需要提供凭证。
有时区别不重要,有时重要的是,我发现这两个命令都很有用。
如果你准备好了要切换到其他游戏机,有ConEmu(我是作者)。它的特点之一–可以在一个ConEmu窗口中同时运行高架和非高架标签页。为了方便用户使用,有一个批处理文件 csudo.cmd (可以很容易地采用到bash)。完整的描述请看项目的wiki。简而言之,当你从现有的非高架标签页中运行一些命令时,例如
csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess
ConEmu将在新的高架控制台/标签页中启动dism
(在Vista中的UAC提示符或XP中的登录框中的UAC提示符)。
默认情况下,csudo
会在一个分页中启动新的控制台(可以通过编辑csudo.cmd
内容来改变)。
三步,添加sudo.
打开PowerShell,
复制下面的脚本(Ctrl+C)并粘贴到PowerShell中(Alt+Space+E+P):
$script_path="$HOME\Documents\Scripts"; if (!(test-path $script_path)) {New-Item -ItemType directory $script_path} if (!(test-path $profile)) { new-item -path $profile -itemtype file -force }". $script_path\sudo.ps1" | Out-File $profile -append; "function sudo(){if (`$args.Length -eq 1){start-process `$args[0] -verb `"runAs`"} if (`$args.Length -gt 1){start-process `$args[0] -ArgumentList `$args[1..`$args.Length] -verb `"runAs`"}}" | Out-File $script_path\sudo.ps1; powershell
1.按回车键。
2.在PowerShell中永久启用sudo
命令。
sudo <process-name> [param1 [param2 [param3]]]
例子:
sudo explorer
sudo notepad
sudo powershell
sudo cmd
sudo taskmgr
sudo tasklist
sudo taskkill /IM Skype.exe /PID 8496
阅读【本文】(http://www.ainotenshi.org/710/%E2%80%98sudo%E2%80%99-for-powershell-sorta).
阅读评论。
看一下Stephen的git仓库和readme文件。我没有在记事本中手动粘贴脚本,而是添加了Out-File
语句来保存脚本中的ps1
和$profile
文件。
正如你可能已经发现的那样,runas可以让你以另一个用户的身份运行,但是它不能做 elevation,而且它不能传递当前目录、环境变量和长的命令行。你也可以两者兼而有之,以不同的用户身份运行 elevated。当前的目录、环境变量和长的命令行都是通过共享内存握手的方式传递给在调用者上下文中运行的 su 和作为新凭证的副本之间运行的自己,然后启动子系统。全面披露:我是作者。
我写了gsudo,是一个用于windows的sudo,感觉就像*nix sudo
一样,有几个杀手级的功能:
-n
,在新窗口中启动。
–可靠地处理所有的场景,在脚本上使用。ExitCodes、StdIn/Out/Er重定向/捕获)
–支持Cmd/PowerShell/PowerShell内核
–凭证缓存。如果gsudo
在几分钟内被多次调用,它只显示一次UAC弹出。
&004 ###使用方法
gsudo
在当前控制台中打开一个高架shell。
gsudo [options] {command} [arguments]
执行指定的高架权限的命令。
最相关的[options]
:
- -n | --new
* 在新的控制台中启动高架权限的命令(并立即返回)。
- **-w | --wait
* 强制等待进程结束(并返回退出代码)。
- -s | --system
* 以本地系统帐户("NT AUTHORITY\SYSTEM")运行。
--copyev
scoop install gsudo
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"
这个脚本的作用是:
@echo Set objShell = CreateObject("Shell.Application") > %temp%\sudo.tmp.vbs
@echo args = Right("%*", (Len("%*") - Len("%1"))) >> %temp%\sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\sudo.tmp.vbs
@cscript //NoLogo %temp%\sudo.tmp.vbs
&001
保存为sudo.cmd
,然后将其添加到你的PATH中
注意:runas
在这里的意思是 “以管理员身份运行",而不是 "以其他用户身份运行”
摘自此处 ,略作编辑,从输出中删除cscript.exe头