2014-12-11 4 views
1

Active Directory 사용자 및 컴퓨터에서 "컴퓨터의 고유 ID"특성을 가져 오려고합니다. 모든 속성에서컴퓨터의 고유 ID를 찾을 수 없음 광고 ID

$endpoint = "someEndpoint" 
$directorySearcher = New-Object System.DirectoryServices.DirectorySearcher 
$directorySearcher.PageSize = 100 
$directorySearcher.SearchScope = [System.DirectoryServices.SearchScope]::Subtree 
$directorySearcher.Filter = "(&(objectCategory=computer)(cn=$endpoint)" 

$result = $directorySearcher.FindOne() 

$result.Properties["objectguid"] # {30 103 159 141 234 5 102 71 128 215 212 4 206 254 198 63} 
# Converted to hex = 1E679F8D-EA05-6647-80D7-D404CEFEC63F 

$result.Properties["objectsid"] # {1 5 0 0 0 0 0 5 21 0 0 0 160 13 253 83 27 146 29 52 250 235 11 116 142 150 12 0} 
# Converted to hex = 1 5 0 0 0 0 0 5 15 0 0 0 A0 D FD 53 1B 92 1D 34 FA EB B 74 8E 96 C 0 

$result.Properties["netbootguid"] # {68 69 76 76 57 0 16 83 128 49 185 192 79 57 50 83} 
# Converted to hex = 44 45 4C 4C 39 00 10 53 80 31 B9 C0 4F 39 32 53 

, 위의 3

했다 바이트의 GUID/배열을 가진 유일한 3 :

컴퓨터의 고유 ID의 값은 4C4C4544-0039-5310-8031-B9C04F393253

나는 다음과 같은 코드가

입니다

그러나 Active Directory 사용자 및 컴퓨터 GUI에서 가져온 값과 일치하는 것은 3 개입니다.

누구든지 PowerShell에서 컴퓨터의 고유 ID 특성에 액세스하는 방법을 알고 있습니까?

+2

난 당신이 GUID/UUID를 의미 가정합니다 ? AD cmdlet에 대한 액세스 권한이 있습니까? 'Get-ADComputer $ endpoint | Select-Object -ExpandProperty ObjectGUID'를 선택하십시오. 또한 [this] (http://myitforum.com/cs2/blogs/maikkoster/archive/2009/12/15/finding-computer-in-active-directory-based-on-the-netbootguid.aspx)는 값은 표시된 것보다 다르게 저장됩니다. 마지막 예제는 닫습니다. – Matt

+1

'$ result.Properties [ "netbootguid"]'는 처음 세 그룹에서 진행되는 이상한 엔디안과 관련된 컴퓨터의 고유 ID처럼 보입니다. –

+2

@BaconBits는 내 의견에 링크를 확인합니다. 그것은 그것을 커버하고 나는 더 긴 설명에 대한 링크를 생각한다. 그룹의 첫 번째 커플에서 바이트를 반대로 바꿔야합니다. – Matt

답변

3

당신은 당신이 다음 문을 실행할 수있는 광고 PowerShell cmdlet을에 액세스 할 수있는 경우 :

Get-ADObject -Filter {objectclass -eq "computer"} | where { $_.Name -eq "COMPUTERNAME" } | Select ObjectGuid 

이 내가 Active Directory 사용자 및 컴퓨터 GUI에서 볼 수있는 고유 ID를 반환합니다.

마지막으로 (netbootguid) 사용자가 원하는 실제 GUID를 알려줍니다. 당신은 당신처럼 16 진수로 직접 변환 할 수 없습니다.

당신이 증거하는 PowerShell 명령 프롬프트를 열고 netbootguid와 바이트 배열을 만들려면 다음

[byte[]]$array5 = 68,69,76,76,57,0,16,83,128,49,185,192,79,57,50,83 
New-Object -TypeName System.Guid -ArgumentList @(,$array5) 

출력은 다음과 같습니다 고유 ID로

Guid 
---- 
4c4c4544-0039-5310-8031-b9c04f393253 
+0

감사합니다. 따라서 기본적으로 Bytes 배열을 guid로 변환 할 때 Guid 객체를 만들고 바이트 배열을 생성자에 전달해야합니다! 처음 몇 바이트의 기이 한 엔디안이 있기 때문에 직접 변환하는 것이 아닙니다. –

관련 문제