我在这里不知所措。我正在尝试理解 CSVDE 及其工作原理。当我为我的应用程序导出用户时,我需要确保获得 objectSID。当我运行 CSVDE 时,我得到以下 objectSID:
X'010500000000000515000000f3d2d24f8dce0c921ba52c8f97040000'
当我使用 powershell 并转储同一用户时,我将其作为 objectSID
150000052100024321021079141206121462716544143151400
显然,这些不是同一串字符。我需要某种方法从 Active Directory 转储用户并获取 X'010500000000000515000000f3d2d24f8dce0c921ba52c8f97040000' 格式的 objectSID,而不使用 CSVDE。
有人以前见过这个吗?你们有什么可以帮助我解决这个问题的吗?我以为我可以获取 Powershell 输出,然后将其转换,但我不知道该数据是什么格式。我看到有人说 CSVDE 输出是二进制的(但事实并非如此),我看到有人说它是十六进制(我不这么认为)。所以我很茫然。
任何人都可以透露一些信息吗?
我没有解决方案,但我可以告诉你这两种表示方式如何相互关联:
X'010500000000000515000000f3d2d24f8dce0c921ba52c8f97040000'
'...'
内的字符串是一个“十六进制字节字符串”,由0
左填充的字节值的2个十六进制数字表示形式组成。
您可以将其转换为
[byte[]]
数组,如下所示:
[byte[]] $bytes =
"X'010500000000000515000000f3d2d24f8dce0c921ba52c8f97040000'" `
-replace "^X'|'$" `
-split '(..)' -ne '' -replace '^', '0x'
150000052100024321021079141206121462716544143151400
上面是 - 由于不明确而无用 - 来自原始字符串没有填充的十进制字节值的字符串化,通过以下方式获得:
-join $bytes