获取属性GUID

3

这是上下文:我正在尝试将一组属性设置为“已验证用户”。 为此,我编写了以下脚本:

# GETTING AUTHENTICATED USERS SID
$sid1 = "S-1-5-11"
$objSID1 = New-Object System.Security.Principal.SecurityIdentifier($sid1)

# GETTING AUTHENTICATED ACL
$acl = Get-Acl -Path "AD:DC=*****,DC=*****"

# CREATING RULE ATTTIBUTES
$objectGuid = New-Object Guid 5f332e20-9eaa-48e7-b8c4-f4431fef859a 
$identity = [System.Security.Principal.IdentityReference] $objSID1
$adRights = [System.DirectoryServices.ActiveDirectoryRights] "ReadProperty,WriteProperty"
$type = [System.Security.AccessControl.AccessControlType] "Allow"
$inheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance] "Descendents"
$inheritedobjectguid = New-Object Guid bf967aba-0de6-11d0-a285-00aa003049e2

# CREATING THE NEW RULE
$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $identity, $adRights, $type, $objectGuid, $inheritanceType, $inheritedobjectguid

# SETTING THE NEW RULE
$acl.AddAccessRule($ace)
Set-Acl -AclObject $acl "AD:DC=*****,DC=*****"

最终结果应该是这样的:

第一部分

第二部分

重要的一点是,正如第二张图片所示,我试图设置的是一个属性而不是一个许可。而且由于在此之前我使用另一个脚本创建了它,因此这个属性在所有计算机上的GUID并不相同。

问题如下:

在设置$objectGuid变量的代码中,我已经硬编码了我需要的GUID。我需要知道是否有任何方法可以通过PowerShell获取属性的GUID。

1个回答

3

您可以从架构中检索属性的GUID:

  1. 查询schemaNamingContext以获取attributeSchema对象
  2. 过滤ldapDisplayName,这是GUI显示的属性名称
  3. 获取schemaIDGUID属性值并在ACE中使用它

为了简单起见,我将使用RSAT ActiveDirectory模块,但您可以使用任何ldap客户端来完成此操作:

$attrSchemaParams = @{
    SearchBase = (Get-ADRootDSE).schemaNamingContext
    Filter = "ldapDisplayName -eq 'pwmEventLog' -and objectClass -eq 'attributeSchema'"
    Properties = 'schemaIDGUID'
}
$pwmEventLogSchema = Get-ADObject @attrSchemaParams

$pwmEventLogGUID = $pwmEventLogSchema.schemaIDGuid -as [guid]

现在使用$pwmEventLogGUID代替$objectGuid

2
非常感谢!我之前尝试过类似的东西,但现在我意识到我使用的是对象的ObjectGUID属性,这就是为什么之前它没有起作用的原因。 - Andrés

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接