在 Windows 终端中创建一个以不同用户身份运行的选项卡?

在 Windows 终端中创建一个以不同用户身份运行的选项卡?

所以我可以跑...

runas /user:PNG\SomeSvc "cmd /c ^"powershell.exe^""

并获取由不同用户运行的 powershell 提示符。

但是如果我使用 Windows 终端并且想以其他用户身份运行它,我该怎么做?我确信这可能与 json 配置文件有关。

此外,如果我通过命令行将文件存储在安全字符串或“Windows 凭据管理器”中,是否需要使用任何东西进行身份验证New-StoredCredential

答案1

正如评论中提到的,我下面的回答错误地只解决了如何运行提升的管理选项卡或终端。如果你像 OP 一样,正在寻找如何对任何用户执行此操作,那么它并没有回答这个问题。保留答案,因为它似乎至少对有不同目标的人有所帮助,但我现在不知道如何为其他用户执行此操作。

你的问题标题和问题主体感觉不相当与我对齐。问题标题询问:

在 Windows 终端中创建一个以不同用户身份运行的选项卡?

但您的问题主体(以及现有的 PowerShell 示例)似乎略有不同:

但是如果我使用 Windows 终端并且想以其他用户身份运行它,我该怎么做?

因为我不太确定你是否想要选项卡中的权限提升,或者如果你只是想以权限提升的方式启动 Windows 终端,我会回答这两个问题:

提升单个标签页

您无法针对单个选项卡提升用户的 UAC 权限。请参阅 Windows Terminal Github问题 #632#691了解更多信息。警告,#632 很长。

您可能可以通过结合使用 PowerShell 远程处理和/或 OpenSSH 来解决这个问题。由于我已经启用了 Windows OpenSSH 服务器,所以我做了一些快速测试:

  • 启用 Windows 管理员(我尝试此操作后立即再次禁用它)
  • 设置管理员帐户的密码
  • ssh作为localhost我的普通用户
  • 启动 PowerShell 或 PowerShell 核心(我已将其设置为默认的 OpenSSH shell)
  • $cred = New-Object -type System.Management.Automation.PSCredential "Administrator", (Read-host -AsSecureString)
  • Enter-PSSession -ComputerName localhost -Credential $cred
  • whoami结果是computername\Administrator

请注意Enter-PSSession -ComputerName localhost,它无法直接从 Windows 终端选项卡运行,因为它(先有鸡还是先有蛋)需要提升...

升降式 Windows 终端

但是,启动一个新提升的 Windows 终端进程非常容易。

我通常使用 PowerShell 命令来执行此操作:

Start-Process wt -Verb RunAs

您也可以从“开始”菜单或固定的任务栏条目中“以管理员身份运行”。当然,这将弹出 UAC 提示。

我还没有尝试过,但是如果您想wt.exe使用管理员凭据运行,您至少需要:

  • 启用管理员帐户并设置密码
  • 使用该帐户登录 Windows
  • 从商店安装 Windows 终端

否则,该用户无论如何都不会在其帐户中安装它。

或者您可以通过安装非 Store 版本的 Windows Terminal 来规避这种情况。但请注意,Microsoft 认为这是一种“不受支持”的配置。

答案2

如果你有 sysinternals,那么你可以使用

PS> psexec -h \\local powershell

从非管理员终端。然而,这会导致奇怪的终端行为,因此最好只使用PS> psexec -h \\local <command>以管理员身份运行所需的单个命令。

答案3

您可以使用以下方式创建在特定不同用户下运行的配置文件鲁纳斯在命令行中。

打开设置,然后点击添加新个人资料。如果复制现有配置文件之一,则更容易。在命令行框中编辑它以包含运行方式、指定用户,并将现有命令括在引号中。例如:

runas.exe /user:[email protected] "C:\Program Files\PowerShell\7\pwsh"

然后命名配置文件。现在,您可以使用该配置文件打开新选项卡,它会立即要求您输入密码[电子邮件保护]并以该用户身份运行后续命令。

您还可以选择以管理员身份运行此配置文件

相关内容