我想从.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}
可以,但是值不同。
你们知道我在做什么错吗? 预先谢谢你。
答案 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}