Вставить строку в атрибут ms-ds-consistencyGUID - PullRequest
0 голосов
/ 08 июня 2019

Я хотел бы автоматизировать завершение атрибута ms-ds-consistencyGUID в моем AD из строки, собранной в файле .txt.

Я могу преобразовать строку в GUID, но в итоге получаю другой вывод в моей AD. Вот мой код.

$mykey = Get-Content C:\...\file.txt

Значение моего ключа «AD E9 8A 79 0B F1 5B 4D AB 5F 5C 29 DA 5B 85 7D»

Затем я удаляю пробелы и преобразовываю строку в GUID

[guid]$GUIDkey = $mykey.replace(" ","")

Как только я согласен с этим, я отправляю все это в моем объявлении:

Set-Aduser -Identity MY_USER -Add @{"ms-ds-ConsistencyGUID" = $GUIDkey}

Работает, но значение другое.

Ребята, вы понимаете, что я делаю не так? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Я собираю содержимое моего .txt файла, затем превращаю строку в массив и обрабатываю его, чтобы получить ожидаемый результат. Наконец я установил учетную запись моего пользователя. И все это прекрасно работает:

$mykey = (Get-Content C:\(...)\FILE.txt).Split(" ")

[guid]$myGUID = -join ($($mykey[-13..-16])+$($mykey[-11..-12])+$($mykey[-9..-10])+$($mykey[8..15]))

Set-Aduser -Identity USER -Add @{"ms-ds-consistencyGUID" = $myGUID}
0 голосов
/ 08 июня 2019

Ваша операция, вероятно, работает. То, как вы извлекаете данные из AD, может быть причиной несоответствия.

Если вы запросите значение, используя Get-ADUser, он вернет байтовый массив, а не guid. В этом случае вы можете сделать простое преобразование:

$a = Get-ADUser -Identity MY_USER -Properties 'ms-ds-consistencyguid'
$a.'ms-ds-consistencyguid' -as [guid] # Converts byte array to guid

Если вы посмотрите на значение в редакторе атрибутов AD, вы увидите значение в шестнадцатеричном формате X2. Это будет вашей исходной строкой до замены пробела. Начиная с Get-ADUser, вы можете проверить, что ваши данные AD соответствуют вашей исходной строке, преобразовав каждый байт в шестнадцатеричный формат X2 и затем соединив получившиеся элементы массива X2 вместе с пробелом.

$a = Get-ADUser -Identity MY_USER -Properties 'ms-ds-consistencyguid'
$x2 = foreach ($c in $a.'ms-ds-consistencyguid') { 
         "{0:X2}" -f $c
      } 
$x2 -Join " "
...