PowerShell脚本中Get-ADUser/MemberOf命令缺少结果

PowerShell脚本中Get-ADUser/MemberOf命令缺少结果,powershell,active-directory,Powershell,Active Directory,我正在尝试编写一个脚本,该脚本将遍历域帐户并打印出它们所属的用户名和组: $Users = Get-ADUser -Filter * -SearchBase "CN=Individual Accounts,CN=Users,DC=royprdt,DC=royston,DC=com" ForEach($User in $Users){ $GetMembership = Get-ADUser -Identity $User.SamAccountName -Properties *; $GroupMe

我正在尝试编写一个脚本,该脚本将遍历域帐户并打印出它们所属的用户名和组:

$Users = Get-ADUser -Filter * -SearchBase "CN=Individual Accounts,CN=Users,DC=royprdt,DC=royston,DC=com"
ForEach($User in $Users){
$GetMembership = Get-ADUser -Identity $User.SamAccountName -Properties *;
$GroupMembership = ($GetMembership.memberof | % { (Get-ADGroup $_).Name; }) -join ';';
$User.Name + ';' + $GroupMembership;
}
我遇到的问题是,域中大约有3/4的用户没有返回任何组

例如,对于以下代码:

$User = Get-ADUser -Identity 'User1' -Properties *;
($User.memberof | % { (Get-ADGroup $_).Name; }) -join ';';
按预期返回“ProcessControlAdmin”

对于,相同的代码不返回任何内容。没有错误,只有一个空行

在ADUC中进行比较时,两个帐户的配置似乎相同(除了组成员身份)。如果我将User1设置为与User2相同的组的成员,那么在查询时它们会显示得很好。如果我使User2成为与User1相同的组的成员,我仍然不会得到任何返回

我已经尝试使用DSQuery/DSGet,并获取为User1返回的所有组(包括“域用户”)。对于User2,我只得到“域用户”组


我假设我把用户配置错了。。。谁能解释一下我可能做了什么?谢谢

让我直截了当地说,您想在一行中列出域中所有计算机及其成员的组,并用分号分隔

例:User1;ProcessControlAdmin;ProcessControlUser;打印机1

试试这个:

Get-ADComputer -Filter * -Properties memberOf | 
  ForEach { 
    $_.Name + ";" + (($_.memberOf | % { ($_ -Split "," -Split "=")[1] }) -Join ";") 
  }

让我直截了当地说,你想在一行中列出你域中的所有计算机,以及它所属的组,并用分号分隔

例:User1;ProcessControlAdmin;ProcessControlUser;打印机1

试试这个:

Get-ADComputer -Filter * -Properties memberOf | 
  ForEach { 
    $_.Name + ";" + (($_.memberOf | % { ($_ -Split "," -Split "=")[1] }) -Join ";") 
  }

找到了!当我显示lastLogon属性时,我看到对于没有显示组的用户,他们也从未登录到域。对于至少登录一次的用户,他们的组显示正确。

找到了!当我显示lastLogon属性时,我看到对于没有显示组的用户,他们也从未登录到域。对于至少登录一次的用户,其组显示正确。

这是复制问题吗?您查询的控制器是否与进行更改的控制器相同?还要注意的是,主要组成员身份未显示在
memberof
。。。但是
PrimaryGroup
是的,这是一个只有一个控制器的小域,我从中运行查询。一个用户在整个下午被查询时都没有返回任何内容,现在却正确地返回了组,这只是为了混淆问题……我认为这并不重要,但有可能是DC限制了您的查询。不管我在这个假设上是否错了,你都在两次查询用户<代码>$Users=Get ADUser-Filter*-SearchBase“CN=个人账户,CN=用户,DC=royprdt,DC=royston,DC=com”-属性成员。然后将内部循环更改为
$GroupMembership=($user.memberof |…
Fwiw在您只需要
properties memberof
时不要使用
properties*
谢谢Matt,我以前从未使用过Powershell,所以我只是想混过去,犯了很多错误!我做了这些更改,它运行得更快,但仍然返回与昨天相同的结果。这是我的复制吗问题?您查询的控制器是否与进行更改的控制器相同?还请注意,
memberof
…中未显示主要组成员身份,但
PrimaryGroup
是的,这是一个只有一个控制器的小域,我正从该控制器运行查询。一个整个下午都没有返回任何内容的用户hen QUERDIED现在正确返回组,只是为了混淆问题……我认为这不重要,但可能是DC限制了您的查询。不管我是否错误地认为您正在查询用户两次。
$users=Get ADUser-Filter*-SearchBase“CN=个人帐户,CN=用户,DC=royprdt,DC=royston,DC=com”-Properties memberof
。然后将内部循环更改为
$GroupMembership=($user.memberof |…
Fwiw当您只需要
properties memberof
时,不要使用
properties*
谢谢Matt,我以前从未使用过Powershell,所以我只是想蒙混过关,犯了很多错误!我做了这些更改,它运行得更快,但仍然返回与昨天相同的结果。谢谢Marc,我不是after一个计算机列表,但一个用户列表。我用Get ADUser运行了你的脚本,它给出的结果与上面的原始脚本完全相同。在域中的200个用户中,我可以看到大约50个用户的组成员身份。其他150个没有显示组(但当你查看ADUC GUI时,它们会显示)。谢谢Marc,我不是要一个计算机列表,而是要一个用户列表。我用Get ADUser运行了你的脚本,它给我的结果与上面的原始脚本完全相同。在域中的200个用户中,我可以看到大约50个用户的组成员身份。其他150个没有显示组(但当你查看ADUC GUI时,它们会显示)。