2014-08-29 2 views
0

Windows XP에서 ActiveRoles 관리 셸을 사용하고 AD에서 그룹 데이터를 검색하고이를 CSV 파일로 내보내는 Powershell 버전 2를 사용하고 있습니다. 회원 목록을 가져 오는 데 시간이 너무 오래 걸립니다. 프로그램이 매회 멤버 열 System.String [] 아래에있는 셀을 작성하고 있다고 가정합니다. 어떻게 전체 목록을 작성할 수 있습니까, 가능합니까? 사실 구성원의 이름 만 전체 연결 경로가 필요하지 않습니다. 그룹 필드 멤버에서만 얻을 수있는 가능성이 있습니까?AD에서 구성원 그룹 특성을 .csv로 가져 오기

get-QADGroup -SearchRoot 'ou=User,ou=Groups,ou=PL,dc=test,dc=com'| Select-Object -property name,sAMAccountName,description,groupType,member|Export-Csv -path Y:\csv\groups.csv 
+0

Select-Object-Property 대신 Select-Object -ExpandProperty와 함께 작동합니까? – Patrick

+0

Select-Object : 'System.Object []'을 'ExpandProperty'매개 변수에 필요한 'System.String'형식으로 변환 할 수 없습니다. 지정된 메서드는 지원되지 않습니다. – user61139

+0

원하는 출력 예를 제공해주십시오. 각 그룹에 대해 하나의 파일을 출력하거나 모든 그룹을 하나의 파일에 저장 하시겠습니까? – TheMadTechnician

답변

0

좋아요, Matt는 Select 문에 표현식을 사용하라고 제안 했으므로 좋습니다. 나는 또한 수출에 -NoTypeInfo을 추가

get-QADGroup -SearchRoot 'ou=User,ou=Groups,ou=PL,dc=test,dc=com'| Select-Object -property name,sAMAccountName,description,groupType,@{l='Members';e={$_.member -join ", "}}|Export-Csv -path Y:\csv\groups.csv -NoTypeInfo 

그것은있어 성가신 리드 라인을 알려주는 건너 뛸 :처럼 한 줄에 삽입

@{l="Members";e={$_.Members -join ", "}} 

보이는 :이 같은 것을 사용합니다 PSCustomObject 또는 일부 및 실제로 귀하의 데이터 (및 헤더) 얻을.

0

내가 선으로 이것의 의미를하려면 activedirectory

Get-ADUser -Filter * -SearchBase "OU=Employees,DC=Domain,DC=Local" -Properties memberof | 
    Select-Object name,@{Name="Groups";Expression={$_.MemberOf | 
    ForEach-Object{(Get-ADGroup -Identity $_).Name + ";"}}} | 
    Export-Csv C:\temp\TEST.CSV -Append 

에서 cmdlet을 기반으로하는 솔루션을 제공 할 것입니다, 그래서 나는 퀘스트 cmdlet에 대한 액세스 권한이없는 :

  1. 자체 설명이 있어야합니다. 정의 된 OU의 모든 사용자를 가져옵니다. 귀하의 필요에 맞게 이것을 변경해야합니다.
  2. calculated property 그룹에 도달 할 때까지 select 문이 정상적으로 나타납니다.
  3. 이전 줄에서 계속되는 것은 개별 사용자가 memberof 인 모든 그룹을 순환하며 그룹의 친숙한 이름을 얻습니다 (MemberOf는 DistinguishedName을 반환 함). 모든 그룹의 끝에는 나중에 작성 될 CSV를 방해하지 않기 위해 ";"을 추가하십시오.
  4. csv 파일에 추가하십시오.

간결함을 위해 나는 Select-Object 문에 포함 된 모든 추가 속성을 포함하지 않았습니다. 필요에 따라 다시 추가해야합니다.

당신이 사용하는 당신이 바로 다음에 SELECT 문에서 member를 변경할 수있는 퀘스트 cmdlet을 가지고 있기 때문에 :

@{Name="Groups";Expression={$_.member | ForEach-Object{"$_;"}}} 

이 작동하는지 내가 테스트 할 수 없습니다. 멤버가 간단한 이름을 가지고 있다고 가정합니다. distinguishedname

+0

불행히도 Active Directory 모듈을 설치할 수 없기 때문에 불행히도 Quest AD shell을 사용해야합니다. – user61139

+0

이 논리를 작동 시키려면 select 문에서 변경해야 할 사항에 대해 숙련 된 추측을했습니다. 출력이 어떤지 알기 위해 구문 자체를 테스트 할 수 없습니다. – Matt

관련 문제