Powershell连接

Powershell连接,powershell,active-directory,powershell-2.0,Powershell,Active Directory,Powershell 2.0,我有一个广告查询,可以导出所有组的成员资格,效果非常好 Get-QADUser -searchRoot $OuDomain -SizeLimit 0 | Select-Object dn, sAMAccountName, @{Name="Groups";Expression={(Get-QADMemberOf $_ | Select-Object -expandProperty Name) -join ";"}} | export-csv $FilePath | Sort-Object S

我有一个广告查询,可以导出所有组的成员资格,效果非常好

Get-QADUser -searchRoot $OuDomain -SizeLimit 0 
| Select-Object dn, sAMAccountName, @{Name="Groups";Expression={(Get-QADMemberOf $_ 
| Select-Object -expandProperty Name) -join ";"}} 
| export-csv $FilePath | Sort-Object SamAccountName
结果:

DN        SamAccountName    Groups
abc.com   user1             group1;group2;group3
如何在列中导出上述结果,如:

DN       SamAccountName  Groups
abc.com  user1           group1
         user1           group2
         user1           group3

请选中

而不是-join,它的目的是保存一个(用户)对多个(组)记录,您需要这样做(未测试)。试一试:

$users = Get-QADUser -searchRoot $OuDomain -SizeLimit 0
$users | Sort-Object SamAccountName | % {
    $user = $_ | Select-Object dn, sAMAccountName
    if ($lastDomain -eq $user.dn) {
        $lastDomain = ""
    } else {
        $lastDomain = $user.dn
    }
    $groups = Get-QADMemberOf $_ | Select-Object -expandProperty Name
    $groups | % {
        $user2 = New-Object -TypeName PsObject -Property @{
                "Domain" = $lastDomain
                "sAMAccountName" = $user.sAMAccountName
                "Group" = $_
            } 
        $user2
    }
} | export-csv $FilePath

使用-join的目的不是保存一个(用户)到多个(组)的记录,而是需要这样做(未测试)。试一试:

$users = Get-QADUser -searchRoot $OuDomain -SizeLimit 0
$users | Sort-Object SamAccountName | % {
    $user = $_ | Select-Object dn, sAMAccountName
    if ($lastDomain -eq $user.dn) {
        $lastDomain = ""
    } else {
        $lastDomain = $user.dn
    }
    $groups = Get-QADMemberOf $_ | Select-Object -expandProperty Name
    $groups | % {
        $user2 = New-Object -TypeName PsObject -Property @{
                "Domain" = $lastDomain
                "sAMAccountName" = $user.sAMAccountName
                "Group" = $_
            } 
        $user2
    }
} | export-csv $FilePath

感谢Seki的格式化。感谢Seki的格式化。嗨,Andy,我收到错误消息“Get QadmMemberof:无法绑定参数'Identity'。无法将“@{DN=CN=test,OU=test1,OU=test,OU=abc,DC=xyz,DC=com;Sam AccountName=k201293}”类型的值Selected.Quest.ActiveRoles.ArsPowerShellSnapIn.Data.ArsUserObject”转换为类型Quest.ActiveRoles.ArsPowerShell SnapIn.Data.IdentityParameter“嗨,安迪,非常感谢,我收到的输出非常完美,它抛出了很多错误消息。我有超过20000万用户。请参阅引发了“System.OutOfMemoryException”类型的异常,如何更正此问题error@Naveenk这是因为管道缓冲内存中的内容的方式,这是由于管道导出csv。事实上,我创建了一个有20K用户的测试广告来尝试它,我看到了这个问题。我可能很快就能看一看。嗨,安迪,我收到错误消息“Get QADMemberOf:无法绑定参数'Identity'。无法将“@{DN=CN=test,OU=test1,OU=test,OU=abc,DC=xyz,DC=com;Sam AccountName=k201293}”类型的“Selected.Quest.ActiveRoles.ArsPowerShellSnapIn.Data.ArsUserObject”值转换为类型Quest.ActiveRoles.ArsPowerShell SnapIn.Data.IdentityParameter“嗨,安迪,非常感谢,我收到的输出非常完美,它抛出了很多错误消息。我有超过20000万用户。请参阅引发了“System.OutOfMemoryException”类型的异常,如何更正此问题error@Naveenk这是因为管道缓冲内存中的内容的方式,这是由于管道导出csv。事实上,我创建了一个有20K用户的测试广告来尝试它,我看到了这个问题。我可能很快就能看一看。