2012-03-19 3 views
0

PowerShell에서 DirectoryEntry 및 DirectorySearcher를 사용하여 특정 OU의 사용자 목록을 얻는 방법을 이미 알고 있습니다. 이 메서드의 결과는 주로 AD에서 찾고있는 것이지만 WMI 쿼리 Win32_UserAccount를 사용하여 동일한 정보를 얻는 것이 더 쉬워 보입니다. 이 클래스의 속성이 더 좋고 SID가 이미 올바른 문자열 형식 (첫 번째 메서드에서는 16 진수 바이트 배열을 문자열로 변환해야 함)입니다.OU로 Win32_UserAccount 결과를 필터링하는 방법

Win32_UserAccount를 사용할 때의 문제는 OU로 필터링하는 방법을 찾을 수 없다는 것입니다. 도메인 및 이름별로 성공적으로 필터링 할 수 있으며 WQL에서 여러 가지 추측을 시도했지만 OU 필터 구문을 찾을 수없는 것 같습니다. 대부분의 시도는 "잘못된 쿼리"가됩니다. 나는이하여 DirectoryEntry/DirectorySearcher를 사용하여 다시 갈 것이다 OU하여이를 필터링 할 수있는 방법이없는 경우

$user = gwmi Win32_UserAccount -filter "name='somebody' AND domain='mydomain'" 

: 다음은 작동하는 쿼리의 예입니다.

답변

1

Win32_Account 클래스의 LDAP 관련 속성이 없다는 점을 감안하면 불행히도 문제가 해결되지 않았다고 생각합니다.

LDAP 관련 데이터를 가져 오기 위해 디렉터리 검색 외에도 원하는 형식으로 SID를 가져올 수 있습니다.

+0

이 내가 할에 대한 생각 무엇을하는 DirectorySearcher에서 OU하여 사용자의 목록을 얻을 Win32_UserAccount (Win32_Account에서 추가 속성을 상속 받음)를 사용하여 나머지 정보를 가져옵니다. WMI에 대한 단순하고 단일 호출이었고 결과를 통해 반복되었지만 OU 속성을 사용할 수없는 경우에는 그 결과로 필터링 할 수없는 것 같습니다. – Bratch

1

퀘스트의 무료 AD cmdlet에 익숙합니까?

http://www.quest.com/powershell/activeroles-server.aspx

당신은 OU에 따라 사용자를 필터링 할 수 있습니다 다양한 형식으로 SID를 얻을 :

PS> Get-QADUser SizeLimit 0 -SearchRoot <OU_DistinguishedName>' | fl *sid* 

objectSid : 0105000000000005150000006753F33372134F3FF673476FF4023001 
Sid  : S-1-5-21-54781788-1045369324-1866953526-501 
(...) 
+0

배포 할 서버에 추가 기능 확장이 없다고 생각합니다. 그것은 내가 가지고있는대로 작동하며 LDAP 호출을 사용하는 경우 SID를 문자열 형식으로 변환하는 함수도 발견했습니다. | fl *는 객체 속성을 가져 오는 데 적합합니다. – Bratch

+0

서버에 설치할 필요가 없으므로 관리 워크 스테이션에서 수행합니다. –

+0

테스트 할 때 내 워크 스테이션에서 실행하지만 스크립트는 다른 컴퓨터에서 실행되도록 배포되고 예약됩니다. 나는 그 기계의 관리자에게 링크를 전달할 것이다. 스크립트는 작동하지 않지만 cmdlet이 수행 할 수있는 다른 작업에 관심이있을 수 있습니다. – Bratch

관련 문제