1

从原始问题编辑,因为真正的问题与问题无关

我从 NTFS 权限中获得了受托人列表,现在我想扩展组以显示成员资格。如果我有一个像 MyDomain\name 这样的 SAM 名称,则没有迹象表明这是否是一个组。Get-ADobject 命令有一个 ObjectClass 属性,如果这是一个 Active Directory 域对象,它将指示组或用户。可以使用: Get-ADObject -filter 'SamAccountName -eq "My Users"'$sam = "My Users" Get-ADObject -filter 'SamAccountName -eq $sam' 感谢 JPBlanc,他有另一种写法,带有脚本块和其他一些建议。谢谢,user2142466。这对于我的原始脚本来说似乎是一个很好的建议。

4

4 回答 4

2

您可以使用 variavle 使用:

$sam = "My Users"
Get-ADObject -Filter {(SamAccountName -eq $sam)}

但我同意使用 vars in-Filter有时会导致 vars 出现奇怪的行为(请参阅这个问题),所以我更喜欢使用-LDAPFilter.

Get-ADObject -LDAPFilter "(SamAccountName =$user)"

注意 -LDAPFilter 对过滤器使用波兰符号,一开始有点令人不安,但在这里,它是使用底层协议 LDAP 进行过滤的自然方式。

您可以在Search Filter Syntax中获得有关此语法的更多信息,也可以在About_ActiveDirectory_Filter中获得相应的过滤器。

于 2013-10-08T05:11:59.080 回答
1

我猜你得到了一系列受托人。(即用户、组、用户、用户、组)。所以如果你有一个小组,那么你也想从中拉出成员吗?

所以我会看看它是否是一个团体,比如你是怎么做的,然后把这些成员拉出来。将它添加到另一个数组,该数组将包含您的 NTFS 权限的每个用户。

$arraytrustees

#Create a blank Array

$NTFSUsers =@()
for each ($object in $arraytrustees){

$ObjectClass = (Get-ADObject -filter {SamAccountName -eq $object}).ObjectClass

  If ($ObjectClass -eq "group"){
  $AdGroupUsers = (Get-ADGroupMember -identity $object).SamAccountName
  $NTFSUsers = $NTFSUsers + $AdGroupUsers
   }else{
    $NTFSUsers = $NTFSUsers + $ojbect
  }
}
于 2013-10-08T05:20:27.337 回答
0

我收到了一份清单,并被要求确定对象是用户还是组,我想出了这个。有效!

cls
$Users = @()
$Groups = @()
$list = Get-Content z:\pcm.txt
Foreach ($o in $list)
{
$ObjectClass = (Get-ADObject -Filter {SamAccountName -eq $o}).ObjectClass
  If ($ObjectClass -eq "User")
  {
  $U = Get-ADUser -Properties * -Identity $o
  $User = "" | Select FullUserName, LoginID, Description
  $User.FullUserName = $U.DisplayName
  $User.LoginID = $U.SamAccountName
  $User.Description = $U.description
  $Users += $User
  }
 Else
 {
 If ($ObjectClass -eq "Group")
 {
 $G = Get-ADGroup -Properties * -Identity $o
 $Group = "" | Select GroupName, Description
 $Group.GroupName = $G.Name
 $Group.Description = $G.Description
 $Groups += $Group
 }
}
}
$Users | Export-Csv z:\Users.csv -NoTypeInformation
$Groups | Export-Csv z:\Groups.csv -NoTypeInformation
于 2017-06-07T18:15:36.420 回答
0

我被要求列出组的所有成员,以及他们的 ID、名称和描述,所以我添加了几行。

cls
$Users = @()
$Groups = @()
$list = Get-Content z:\pcm2.txt
Foreach ($o in $list)
{
$ObjectClass = (Get-ADObject -Filter {SamAccountName -eq $o}).ObjectClass
  If ($ObjectClass -eq "User")
  {
  $U = Get-ADUser -Properties * -Identity $o
  $User = "" | Select FullUserName, LoginID, Description
  $User.FullUserName = $U.DisplayName
  $User.LoginID = $U.SamAccountName
  $User.Description = $U.description
  $Users += $User
  }
 Else
 {
 If ($ObjectClass -eq "Group")
 {
 $G = Get-ADGroup -Properties * -Identity $o
 $GM = Get-ADGroupMember -Identity $G.name -Recursive | Get-ADUser -Properties *
 Foreach ($gmember in $GM)
 {
 $Group = "" | Select GroupName, GroupDescription, GroupMemberName, GroupMemberLoginID, GroupMemberDesc
 $Group.GroupName = $G.Name
 $Group.GroupDescription = $G.Description
 $Group.GroupMemberName = $gmember.Name
 $Group.GroupMemberLoginID = $gmember.SamAccountName
 $Group.GroupMemberDesc = $gmember.Description
 $Groups += $Group
 }
}
}
}
$Users | Export-Csv z:\PCMUsers.csv -NoTypeInformation
$Groups | Export-Csv z:\PCMGroups.csv -NoTypeInformation
于 2017-06-07T19:13:24.980 回答