2012-08-17 70 views
2

我在此网站上找到了一个链接,其中显示了如何将SID转换为二进制类型。有人可以告诉我如何做相反的 - 将二进制类型转换回SID。在PowerShell中将二进制类型SID转换为System.Security.Principal.SecurityIdentifier

这是一个提供了从SID去二进制文件的脚本:

PS> $sid = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-21-105005785-2143699225-541720777-501") 
PS> $c = New-Object 'byte[]' $sid.BinaryLength 
PS> $sid.GetBinaryForm($c, 0) 

谢谢!

+0

如果答案解决您的问题,请通过点击大的复选标记(✓)旁边接受它。 如果您发现其他答案有帮助,请投票给他们。接受和投票答案不仅有助于回答者,也有助于未来的读者。请参阅[相关帮助中心文章](http://stackoverflow.com/help/someone-answers)。如果您的问题尚未得到充分解答,请提供反馈。 – mklement0 2015-12-08 17:29:23

回答

3

从字节数组SID去,请尝试:

(New-Object System.Security.Principal.SecurityIdentifier($c, 0)).toString() 
+2

您也可以对结果对象使用.Value属性,而不是调用tostring()。只是供参考 – 2012-09-16 15:13:08

+0

伟大的东西;顺便说一句:它看起来像你正试图在这里使用_method_语法,它只是_happens_工作(PowerShell解析'($ c,0)'作为单独的参数'@($,0)',映射到' - ArgumentList');也许更好的形式是'New-Object System.Security.Principal.SecurityIdentifier $ bytes,0'或者明确地说,'New-Object -TypeName System.Security.Principal.SecurityIdentifier -ArgumentList @($ bytes,0)' – mklement0 2015-12-08 17:29:03