当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 非管理员用户通过 WinRM 进行 PowerShell 远程处理

作者:精品下载站 日期:2024-12-14 22:49:13 浏览:13 分类:玩电脑

非管理员用户通过 WinRM 进行 PowerShell 远程处理


默认情况下,要使用 PowerShell (PowerShell Remoting) 连接到远程计算机,您需要管理员权限。在本文中,我们将展示如何借助安全组、组策略和修改 PoSh 会话描述符,允许普通用户(无管理员权限)使用 PowerShell Remoting (WinRM) 进行远程连接。

尝试以非特权用户帐户 (Enter-PSSession lon-srv1) 身份与远程计算机创建 PowerShell 会话时,会发生访问错误:

Enter-PSSession:连接到远程服务器 lon-srv1 失败,并显示以下错误消息:访问被拒绝。

[玩转系统] 非管理员用户通过 WinRM 进行 PowerShell 远程处理

远程访问 WinRM 和远程管理用户组

检查PoSh会话的标准权限:

(Get-PSSessionConfiguration -Name Microsoft.PowerShell).Permission

如您所见,允许以下内置组访问:

  1. BUILTIN\Administrators — AccessAllowed,

  2. 内置\远程管理用户 — AccessAllowed

因此,要让用户通过 WinRM 连接到远程计算机,只需成为内置本地管理员组或远程管理用户安全组(从 PowerShell 4.0 开始默认创建该组)的成员即可。该组还可以通过管理协议(例如 WS-Management)访问 WMI 资源

可以使用计算机管理管理单元将用户添加到组中:

[玩转系统] 非管理员用户通过 WinRM 进行 PowerShell 远程处理

或使用命令:

net localgroup "Remote Management Users" /add jsmith

如果您需要在多台计算机上提供此类权限,可以使用组策略。为此,请将 GPO 分配给您需要的计算机,并将新的远程管理用户组添加到计算机配置 -> Windows 设置 -> 安全设置 -> 受限组策略中。将需要授予 WinRM 访问权限的用户或组添加到策略中。

[玩转系统] 非管理员用户通过 WinRM 进行 PowerShell 远程处理

用户成为远程管理用户组的成员后,他可以使用 Enter-PSSession 创建远程 PowerShell 会话,或使用 Invoke-Command cmdlet 运行命令。此会话中的用户权限将仅限于该计算机上的用户权限。

确保远程连接是否建立。

[玩转系统] 非管理员用户通过 WinRM 进行 PowerShell 远程处理

PowerShell会话的安全描述符

快速授予用户使用 PowerShell 远程处理的权限而不将其加入本地安全组远程管理用户的另一种方法是修改本地计算机上当前 Microsoft.PowerShell 会话的安全描述符。此方法将允许通过 PowerShell 向用户快速授予临时(直到下次重新启动)远程连接权限。

以下命令显示当前权限列表:

Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI

在此对话框窗口中,添加用户或组并授予他们执行(调用)权限。

[玩转系统] 非管理员用户通过 WinRM 进行 PowerShell 远程处理

保存更改后,系统将提示确认并重新启动WinRM服务。

如果您必须自动修改安全描述符(无需 GUI),则需要首先手动进行更改,然后以 SDDL 格式获取当前访问描述符。

(Get-PSSessionConfiguration -Name "Microsoft.PowerShell").SecurityDescriptorSDDL

在我们的例子中,该命令返回以下描述符:

O:NSG:BAD:P(A;;GA;;;BA)(A;;GXGR;;;S-1-5-21-2323243421-3342677354-2633435451-55422122)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)

[玩转系统] 非管理员用户通过 WinRM 进行 PowerShell 远程处理

然后,您可以使用此 SDDL 字符串授予对任何其他服务器或工作站上的 PowerShell 的访问权限。

$SDDL = “O:NSG:BAD:P(A;;GA;;;BA)(A;;GXGR;;;S-1-5-21-2323243421-3342677354-2633435451-55422122)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)”
Set-PSSessionConfiguration -Name Microsoft.PowerShell -SecurityDescriptorSddl $SDDL

远程 Hyper-V 管理也需要 WinRM 权限

在Windows 10 /Windows Server 2016中,要使用Hyper-V Manager远程连接Hyper-V服务器,开始使用PowerShell Remoting。因此,默认情况下,没有管理员权限的远程用户将无法管理 Hyper-V 服务器,即使他们在 Hyper-V 中拥有相应的权限。

当尝试以普通用户身份从运行 Windows 10 的计算机连接到 Hyper-V 服务器时,出现以下错误:

尝试连接到服务器“server1”时出错,请检查虚拟机管理服务是否正在运行以及您是否有权连接到该服务器

[玩转系统] 非管理员用户通过 WinRM 进行 PowerShell 远程处理

要允许远程连接到控制台,只需以相同的方式将 Hyper-V 用户添加到本地组远程管理用户即可。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯