我想从.txt文件中收集的字符串自动完成AD中的ms-ds-consistencyGUID属性。
我可以将字符串转换为GUID,但最终在AD中得到不同的输出。这是我的代码。
$mykey = Get-Content C:\...\file.txt
my键的值是"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}
它可以工作,但值是不同的。
你们知道我做错了什么吗?提前谢谢你。
发布于 2019-06-08 20:55:22
您的操作可能正在运行。从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 " "
发布于 2019-06-10 01:08:31
我收集了.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}
https://stackoverflow.com/questions/56506067
复制相似问题