如何通过 GUID 在 Active Directory 中搜索对象?换句话说,找到属于指定 GUID 的对象的最佳方法是什么?
答案1
在 DC 上或安装 RSAT 并启用 AD 工具:
打开“Windows PowerShell 的 Active Director 模块”(使用其他管理工具找到它)
get-aduser -id {guid}
或者对于任何对象:
get-adobject -id {guid}
可能需要通过管道将其传输format-list
以使其可读:
get-adobject -id {guid} | fl
答案2
使用 Powershell 和QuestAD cmdlet,以下代码根据我的 guid 返回我的用户帐户。
$Guid = "d65e4578-475a-422e-ac99-123456789012"
Get-QADUser -IncludeAllProperties|Where {$_.guid -eq $Guid}
这不是最有效的方式,因为它在搜索时会从 AD 加载所有对象,但对我来说有效。
答案3
$guid = "d65e4578-475a-422e-ac99-123456789012"
foreach ($dom in (Get-adforest).Domains) { Get-ADObject -filter {ObjectGUID -eq $guid } -Properties * -Server $dom | fl }
答案4
这比其他所有答案所展示的要容易得多。下面的每个代码块都是一个独立的方法,你可以执行其中任何一个(它们大部分是相同的)。
显然,需要安装远程服务器管理工具(RSAT),或者您需要在域控制器(DC)上工作。
如果您使用 SID,即回收站内的文件夹、文件夹的权限等(它们都以 S-1- 开头),您可以执行以下操作:
Get-ADUser -Filter { SID -eq "S-1-5-21-000-000...0001" } | select Name, GivenName, Surname, SID
或对于多个,添加 OR:
Get-ADUser -Filter { SID -eq "S-1-5-21-000-000...0001" -or SID -eq "S-1-5-21-000-000...0002" } | select Name, GivenName, Surname, SID
或者,如果将它们全部放在一个数组中,则对数组进行迭代:
$MyArray = "S-1-5-21-000-000...0001", "S-1-5-21-000-000...0002"
$MyArray.ForEach( { Get-ADUser -Filter { SID -eq $_ } | select Name, GivenName, Surname, SID })
如果你实际上是通过 GUID 搜索的:
Get-ADUser -Filter { OBjectGUID -eq "e257c3da-9388-0000-00...0001" } | select Name, GivenName, Surname, SID
显然,以上是在搜索用户时。您可以搜索任何对象:
Get-ADObject -Filter { OBjectGUID -eq "e257c3da-9388-0000-00...0001" } | select Name, ObjectClass, ObjectGUID
或者对于按 ObjectGUID 列出的对象(如果它们都在一个数组中):
$MyArray = "e257c3da-9388-0000-00...0001", "e257c3da-9388-0000-00...0002"
$MyArray.ForEach( { Get-ADObject -Filter { OBjectGUID -eq $_ } | select Name, ObjectClass, ObjectGUID })