2012-01-19 3 views
1

나는 완벽하게 작동하는 모든 그룹 멤버십을 내보내는 AD 쿼리가 있습니다.Powershell Join

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의 http://pastebin.com/JMZ863YY

+0

Seki에게 서식을 지정해 주셔서 감사합니다. – Naveen

답변

1

확인하시기 바랍니다 하나 (사용자)를 많은 (그룹) 레코드로 유지하려면 이와 같이 (테스트되지 않은) 작업을 수행해야합니다. 시도해보십시오.

$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 
+0

안녕하세요 Andy, "Get-QADMemberOf : 'Identity'매개 변수를 바인딩 할 수 없습니다."@ {DN = CN = 테스트, OU = 테스트 1, OU = 테스트, OU = abc, DC = xyz, DC 변환 할 수 없습니다. = com; Sam AccountName = k201293} "유형의 값"Selected.Quest.ActiveRoles.ArsPowerShellSnapIn.Data.ArsUserObject "를 입력하여"Quest.ActiveRoles.ArsPowerShell SnapIn.Data.IdentityParameter "." – Naveen

+0

@Naveenk 왜 그런지 알 것 같습니다. 나는 그것을 새롭게했고, 다시 시험해 보았다. –

+0

안녕하세요 Andy, 고마워요,받은 결과가 완벽합니다. 20000 명이 넘는 수천 명의 사용자가 있다는 오류 메시지가 많이 나옵니다. http://pastebin.com/rS5CLR3b를 참조하십시오 – Naveen