无需 AD 搜索即可获得计算机组成员资格

问题描述 投票:0回答:2

是否有等效的方法可以在不运行 AD 搜索的情况下获取计算机的 AD 组成员身份?我需要能够检索 AD 中计算机组成员资格的组 SID,即使计算机没有连接到域控制器,以标准用户帐户运行。

本质上是寻找与此等效的内容,除了当前的计算机帐户。

$groups = [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
windows powershell active-directory active-directory-group
2个回答
2
投票

我通过逆向工程弄清楚了如何做到这一点

gpresult
。为此,首先作为管理员,我授予标准用户对
WMI
命名空间
root\rsop\COMPUTER

的访问权限

我更喜欢一个不必这样做的解决方案,但需要进一步调查。

使用脚本一次性设置机器Set-WmiNamespaceSecurity.ps1

Set-WmiNamespaceSecurity.ps1 root/rsop/COMPUTER add Users Enable 

现在,我可以作为标准用户从计算机所在的计算机中检索 Active Directory 计算机组

SIDs
,即使它未使用以下 PowerShell 连接到网络:

(Get-WmiObject -Namespace "root\rsop\COMPUTER" -Class RSOP_Session -Property SecurityGroups).SecurityGroups

0
投票

我喜欢这个答案:离线时非常有用。我对此进行了一些扩展,以便在连接到域时将其转换为组名称(下面的脚本代码)。这在测试域计算机的组成员身份更改时非常有用(我在测试和验证 gMSA 时遇到了这种需要)。

# Get-ComputerGroupMembership.ps1

#requires -version 3
#requires -RunAsAdministrator

Get-WmiObject "RSOP_Session" -Namespace "ROOT\rsop\computer" -Property "SecurityGroups" | Select-Object -ExpandProperty SecurityGroups | ForEach-Object {
  $SID = $_
  try {
    ([Security.Principal.SecurityIdentifier] $SID).Translate([Security.Principal.NTAccount]).Value
  }
  catch {
    $SID
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.