Я пытаюсь найти пользователя с определенным ms-DS-ConsistencyGuid
с помощью командлета powershell ActiveDirectory Get-ADUser
Я уже собрал $string
= YvCLyl0B3E2tjT6gUbW8RA==
из Azure AD, который мне нуженв качестве основы для моего запроса используется значение свойства ImmutableID
, полученное с помощью следующего командлета Azure AD
PS F:\> $test=get-msoluser -UserPrincipalName niklas.jumlin@domain.com | select-object ImmutableID
PS F:\> $test
ImmutableId
-----------
YvCLyl0B3E2tjT6gUbW8RA==
. Я могу успешно преобразовать свойство ImmutableID
в формат свойства ms-DS-ConsistencyGuid
PS F:\> $string=[system.convert]::FromBase64String("YvCLyl0B3E2tjT6gUbW8RA==")
PS F:\> $string
98
240
139
202
93
1
220
77
173
141
62
160
81
181
188
68
Я также могу преобразовать свойство ImmutableID
в формат свойства ObjectGuid
PS F:\> $bytearray=[system.convert]::frombase64string("YvCLyl0B3E2tjT6gUbW8RA==")
PS F:\> [guid]$bytearray
Guid
----
ca8bf062-015d-4ddc-ad8d-3ea051b5bc44
Если я верну свойство ms-DS-ConsistencyGuid
или ObjectGUID
объектаuser Я получу следующее:
PS F:\> $user=get-aduser niklas.jumlin -Properties ms-DS-ConsistencyGuid | select-object Ms-DS-ConsistencyGuid, ObjectGuid
PS F:\> $user
Ms-DS-ConsistencyGuid ObjectGuid
--------------------- ----------
{98, 240, 139, 202...} ca8bf062-015d-4ddc-ad8d-3ea051b5bc44
При сравнении двух значений они оба возвращаются равными.
PS F:\> if ($user.ObjectGuid -eq $user."MS-DS-ConsistencyGuid") { "ok" }
ok
Если я сравниваю значение ImmutableID
в различных форматахс ObjectGUID
и ms-DS-ConsistencyGuid
они оба возвращают равные
PS F:\> if ($bytearray.guid -eq $user.ObjectGuid) { "ok" }
ok
PS F:\> if ($string -eq $user."ms-DS-ConsistencyGuid") { "ok" }
ok
Но я не могу использовать значение ImmutableID (в любом формате) в качестве ввода при поиске пользователя с помощью Get-ADUser -filter "ms-DS-ConsistencyGuid -eq $string"
Несколько примеров, которые я пытался:
1
PS F:\> get-aduser -filter "ms-ds-consistencyGuid -eq $([GUID]$bytearray)"
get-aduser : Error parsing query: 'ms-ds-consistencyGuid -eq ca8bf062-015d4ddc-ad8d-3ea051b5bc44' Error Message: 'syntax error' at position: '27'.
At line:1 char:1
+ get-aduser -filter "ms-ds-consistencyGuid -eq $([GUID]$bytearray)"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Get-ADUser], ADFilterParsingException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Management.Commands.GetADUser
2
PS F:\> get-aduser -filter "ms-ds-ConsistencyGuid -like $([system.convert]::FromBase64String('YvCLyl0B3E2tjT6gUbW8RA==') -join ' ')"
get-aduser : Error parsing query: 'ms-ds-ConsistencyGuid -like 98 240 139 202 93 1 220 77 173 141 62 160 81 181 188 68' Error Message: 'syntax error' at position: '32'.
At line:1 char:1
+ get-aduser -filter "ms-ds-ConsistencyGuid -like $([system.convert]::F ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Get-ADUser], ADFilterParsingException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Management.Commands.GetADUser
ОБНОВЛЕНИЕ: Следующее работает, но я не могу понять, как фильтровать для ms-DS-ConsistencyGuid
3
PS F:\> get-aduser -filter "objectguid -eq '$([GUID]$bytearray)'"
DistinguishedName : CN=Jumlin Niklas,OU=Users,DC=domain,DC=com
Enabled : True
GivenName : Niklas
Name : Jumlin Niklas
ObjectClass : user
ObjectGUID : ca8bf062-015d-4ddc-ad8d-3ea051b5bc44
SamAccountName : niklas.jumlin
SID : S-1-5-21-1356814742-1182796210-879972363-148862
Surname : Jumlin
UserPrincipalName : niklas.jumlin@domain.com