将字符串粘贴到ms-ds-consistencyGUID属性

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我想从收集在.txt文件中的字符串中自动完成AD中属性ms-ds-consistencyGUID的完成。

我能够将字符串转换为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(" ","")

一旦我好了,我就把整件事送到我的AD中:

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

它有效,但价值不同。

你们有什么想法我做错了什么吗?先感谢您。

提问于
用户回答回答于

我收集.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}
用户回答回答于

您的操作可能正常。如何从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通过将每个字节转换为十六进制X2格式,然后将生成的X2数组元素与空格连接在一起来验证您的AD数据是否与原始字符串匹配。

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

扫码关注云+社区

领取腾讯云代金券