【发布时间】:2023-10-11 03:14:01
【问题描述】:
我发现了一些 PowerShell elevate / sudo 函数,但它们似乎都不能很好地工作(以“像在每个 Unix 和 Linux 发行版上一样直观和无缝”的方式)。它们大多是多余的,因为它们不能很好地工作。如果有人在 PowerShell 上无缝运行提升 / sudo,他们就会知道。
我见过的函数存在的问题是:
• 它们只能通过调用另一个 powershell.exe 实例来处理外部脚本。即,如果您想做一些像sudo gci 或sudo Get-ChildItem 这样简单的事情,这将产生错误,因为这些方法似乎不喜欢调用别名或 Cmdlet(出于某种原因!)。
• 您无法将现有的控制台会话无缝提升到管理员,这似乎需要一个提升/sudo 功能打开一个全新的控制台(似乎很麻烦必须白白打开一个新控制台!)?
有没有人可以使用可靠的 elevate / sudo?我不希望它是完美的,如果有充分的技术原因导致上述事情不起作用(可能与 PowerShell 主机本身功能不足有关),那很好,但最好知道我们可以在 PowerShell 中使用功能提升 / sudo 走多远。遗憾的是,尽管 PowerShell 比 bash 先进得多(而且它的对象操作功能也击败了 Python 和 Perl imo),但有时它似乎是 Unix 领域中一些最简单的功能,例如 sudo在 PowerShell 中是可能的 - 我很想看到这些空白被填补,这样 PowerShell 就可以被证明与 Unix 一样强大(而且更是如此!)。
【问题讨论】:
-
“我希望看到这些空白被填补,这样 PowerShell 就可以被证明与 Unix 一样强大”。呃,我不太确定从哪里开始——一个是命令行 shell,另一个是操作系统系列。
sudo Get-ChildItem没有意义,因为Get-ChildItem不是可执行文件(例如ls在 *nix 上)。sudo在每个命令都托管在自己的进程中的环境中运行良好 - 即。与 PowerShell 的用途和用途相反。您的问题类似于问“{perl,python,c,ruby} 的sudo在哪里?” - 这没有意义 -
对比一目了然。如果您愿意,我们可以对定义进行挑剔,但是当我说“Unix”时,上下文是类 Unix 操作系统中的各种 shell 非常清楚(请参阅我帖子中的其余文本)。
sudo Get-ChildItem非常有道理:它不会生成一个运行的进程吗?该过程可以在用户的上下文中运行,还是以管理员身份运行?你可以假装我想要一个完全匹配但请看最后一段:“我不希望它是完美的......”。请不要执着于此。 PowerShell 上的类似 Sudo 的行为非常吸引人(不仅对我而言)。 -
类 sudo 行为的另一个非常吸引人的方面是从控制台与操作系统的正常交互。即你在控制台上并且你一直在做一些事情,那么你需要进入一个受限目录或打开一个具有管理员权限的文件。它可能对您没有吸引力,但我经常看到人们感叹缺乏“su -”到管理员并继续工作而无需打开不同的控制台会话的能力。
标签: powershell console sudo elevated-privileges