可以“查找计算机的唯一ID AD属性”

时间:2014-12-11 07:55:33

标签: powershell active-directory

我想获得计算机的唯一ID"来自Active Directory用户和计算机的属性。

计算机的唯一ID值为4C4C4544-0039-5310-8031-B9C04F393253

我有以下代码:

$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个。

但是,这3个中没有一个符合我从Active Directory用户和计算机GUI获得的值。

有谁知道如何从PowerShell访问计算机的唯一ID属性?

1 个答案:

答案 0 :(得分:3)

如果您有权访问AD powershell cmdlet,则可以运行以下语句:

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

这将返回我在Active Directory用户和计算机GUI中看到的唯一ID。

另外只是为了让您知道,最后一个(netbootguid)是您想要的实际GUID。你不能像你一样直接转换为十六进制。

如果您想要打开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)

输出结果为:

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