在PowerShell中将二进制类型SID转换为System.Security.Principal.SecurityIdentifier

时间:2012-08-17 08:22:00

标签: powershell binary sid

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

这是从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) 

谢谢!

2 个答案:

答案 0 :(得分:3)

要从字节数组转到SID,请尝试:

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

答案 1 :(得分:0)

如果要在C#中执行相同的操作,则可以执行以下操作(来自https://stackoverflow.com/a/59258680/12508260):

在我的情况下,byte []来自ManagementEventWatcher:

ManagementBaseObject ne = e.NewEvent;
var securityIdentifier = System.Security.Principal.SecurityIdentifier((byte[])ne.Properties["SID"].Value, 0);

您可以只使用securityIdentifier.ToString()来获取SID作为字符串。