PowerShell 以不同用户身份运行
![PowerShell 以不同用户身份运行](/img/PowerShell/feature-image---powershell-run-as-different-user.webp)
PowerShell 是面向 Windows、Mac 和 Linux 用户的基于命令行的自动化和脚本解决方案。许多操作系统用户可以使用 PowerShell。使用 PowerShell 的主要用户之一是 Windows 用户。
与 Linux 和类似 Linux 的系统不同,Windows 的脚本功能有限。Windows PowerShell 是一种很好的解决方案,可以填补这一空白,并为 Windows 用户在 CI/CD 系统管理、脚本和自动化任务方面提供一定的灵活性。
有关 Windows 和其他版本的 PowerShell 的更多详细信息可以通过 https://learn.microsoft.com/en-us/powershell/ 找到,其中包括官方 PowerShell 文档。
在 Windows 系统中,不同的用户可以通过其他凭据登录并使用相同的 Windows 系统。在 PowerShell 中,用户可以作为不同的用户(该用户具有访问权限)登录并执行脚本。
使用 Credential
命令以其他用户身份运行 PowerShell 以执行脚本
有多种方法可以使用 PowerShell 应用程序更改用户帐户。首先,你应该打开 PowerShell 应用程序。然后,可以使用 credential
关键字打开弹出窗口。然后你可以输入所需的用户凭据(用户名和密码)。
start powershell -credential ""
作为上述命令的结果,可以看到下图中显示的弹出窗口,你可以在其中输入其他用户凭据以切换到所需的用户。打开的弹出窗口是 Windows PowerShell 凭据请求。
但是,你可以使用其他方法来实现此目的,而不是仅包括 credential 命令。
但是,这里要记住一件事。如果你将新打开的 PowerShell 与键盘和其他输入设备一起使用,则必须先关闭父 PowerShell 应用程序窗口。
这是你用来以其他用户身份打开新 PowerShell 窗口的窗口。如果没有,你将面临以新用户身份运行的命令。
在这里,该过程是安全的,因为它不需要你在输入中键入用户名和密码文本。但是,有一种不太安全的方法可以跳过上述弹出窗口。
该方法将提供 $username
和 $password
并提供 credential 关键字以及 new-object
以直接登录到使用 PowerShell 所需的不同用户帐户。由于用户帐户存在潜在的安全风险,不建议使用。
以不同用户身份运行 PowerShell 以执行存储脚本的基于 UI 的解决方案
与其使用以一个用户身份运行 PowerShell、提供命令并以新用户身份登录的复杂过程,不如使用更易于访问的基于 UI 的解决方案来实现这一点。
最推荐和最简单的方法之一是首先将 PowerShell 应用程序固定到 Windows 机器的任务栏。
然后你可以右键单击 PowerShell 图标,该图标会显示一个选项为 Windows PowerShell。将鼠标悬停在该选项上,单击 Shift 并一起右键单击以打开另一个菜单。
你可以从新菜单中选择以不同用户身份运行
。然后将打开一个不同的弹出窗口,如下图所示。在启动应用程序之前,你可以输入你要登录的用户的用户凭据(密码和用户名)。
因此,用户可以作为新用户登录到他们有权访问的帐户,并以该特定用户的身份使用 PowerShell 应用程序来运行任何存储的脚本或任何相似的脚本。
但是,除非你以管理员身份登录,否则你可能无法执行某些通过 PowerShell 可用的命令。例如,任何需要对 System32 文件进行任何更改的命令在执行命令之前都需要完全的管理员权限。你可以通过 https://blog.idera.com/database-tools/powershell/ask_the_experts/f/learn_powershell_from_don_jones-24/21279/which-commands-require-running-as-阅读有关需要管理员权限的提升 PowerShell 会话和命令的更多信息管理员。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.