我发现了一些 PowerShell 提升/sudo 函数,但它们似乎都不能很好地工作(以“与在每个 Unix 和 Linux 发行版上一样直观和无缝”的方式)。它们大多是多余的,因为它们不能很好地工作。如果有人在 PowerShell 上拥有无缝工作的 elevate/sudo,他们就会知道。
我见过的函数的问题是:
• 它们只能通过调用 powershell.exe 的另一个实例来处理外部脚本。即如果你想做一些像 sudo gci
或 sudo Get-ChildItem
这样简单的事情,这将产生一个错误,因为这些方法似乎不喜欢调用别名或 Cmdlet (出于某种原因!)。
• 您不能将现有的控制台 session 无缝地提升到管理员,这似乎需要提升/sudo 功能打开一个全新的控制台(似乎很麻烦,必须白白打开一个新的控制台!)?
有人使用可靠的 elevate/sudo 吗?我不希望它是完美的,如果有充分的技术原因导致上面的事情不起作用(可能与 PowerShell 主机本身的能力不足有关)那么那很好,但它会很好知道我们可以在 PowerShell 中使用功能提升/sudo 走多远。令人遗憾的是,虽然 PowerShell 比 bash 先进得多(而且它的对象操作功能也击败了 Python 和 Perl imo),但有时它似乎是 Unix 领域中一些最简单的功能,比如 sudo,击败了什么在 PowerShell 中是可能的 - 我很乐意看到这些空白被填补,以便 PowerShell 可以显示出与 Unix 一样的能力(甚至更多!)进行更改。
最佳答案
当然,盒子里没有什么 native 的东西,所以,当谈论 sudo 与 Windows 的东西时,苹果/橘子比较。
安全边界/功能只是不同,众所周知,Windows(以及 PowerShell)中的 sudo 等价物是 RunAs,它将弹出 Windows UAC,没有绕过它,没有关闭 UAC(不要这样做this) 或设置 AppCompat 垫片。
所以,当你说函数时,你是说你已经厌倦了这些:
Find-Module -Name '*sudo*' |
Select Name, Version, Type, Description
# Results
<#
Name Version Type Description
---- ------- ---- -----------
Sudo 2.1.0 Module Use functionality similar to sudo in PowerShell. GitHub: https://github.com/pldmgg/Sudo
PSSudo 1.4.0 Module Function for executing programs with adminstrative privileges
#>
这类问题在这里出现了很多,并且已经回答了好几次。那么,您是说,您尝试了以下操作?
How to sudo on powershell on Windows
Start-Process -Verb RunAs powershell.exe -Args "-executionpolicy bypass -command Set-Location \`"$PWD\`"; .\install.ps1"
Sudo !! equivalent in PowerShell
runas /user:domain\administrator $^
Is there any 'sudo' command for Windows?
doskey sudo= runas /user:Administrator "cmd /k cd \"%cd%\" & $*"
runas /noprofile /user:Administrator cmd
另请参阅:
关于powershell - PowerShell 上的提升/Sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59502935/