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

时间:2019-06-08 11:47:40

标签: powershell scripting guid

我想从.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(" ","")

一旦我同意,我会将整个内容发送到我的广告中:

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

可以,但是值不同。

你们知道我在做什么错吗? 预先谢谢你。

2 个答案:

答案 0 :(得分:0)

您的操作可能正在运行。不一致之处可能在于您如何从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格式看到该值。这似乎是替换空格之前的原始字符串。您可以通过将每个字节转换为十六进制X2格式,然后将生成的X2数组元素和一个空格连接在一起,从Get-ADUser中验证您的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 " "

答案 1 :(得分:0)

我收集了.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}