根据原始问题进行编辑,因为真正的问题与问题无关
我从 NTFS 权限中获得了受托者列表,现在我想扩展组以显示成员身份。如果我有一个类似 MyDomain\name 的 SAM 名称,则不会表明它是否是一个组。 Get-ADobject 命令具有一个 ObjectClass 属性,如果这是 Active Directory 域对象,则该属性将指示组或用户。可以使用:
Get-ADObject -filter 'SamAccountName -eq“我的用户”'
或
$sam =“我的用户”
Get-ADObject -filter 'SamAccountName -eq $sam'
感谢 JPBlanc,他提供了一种使用脚本 block 和其他一些建议来编写该内容的替代形式。
谢谢,用户2142466。这看起来对我的原始脚本来说是一个很好的建议。
最佳答案
您可以使用变量:
$sam = "My Users"
Get-ADObject -Filter {(SamAccountName -eq $sam)}
但我同意在 -Filter
中使用变量有时会导致变量 ( see this question ) 出现奇怪的行为,因此我更喜欢使用 -LDAPFilter
。
Get-ADObject -LDAPFilter "(SamAccountName =$user)"
请注意 -LDAPFilter 对过滤器使用波兰表示法,一开始有点令人不安,但在这里,这是使用底层协议(protocol) LDAP 进行过滤的自然方式。
您可以在 Search Filter Syntax 中获取有关此语法的更多信息。 ,您还可以在About_ActiveDirectory_Filter中获取相应的过滤器.
关于powershell - 查明安全帐户管理器 (SAM) 名称是用户还是组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237298/