共计 694 个字符,预计需要花费 2 分钟才能阅读完成。
最近迁徙了一些用户从域 A 转到另外一个域 B,为了方便继续访问旧的文件系统,保留了 SID 历史记录。今天发现个别运行在旧域 A 的 Citrix Xenapp 程序不工作了。
经过检查,发现该程序启动的时候会自动运行 whoami /group 自检,如果有无法解析的 SID,自动结束。估计是迁徙的时候某些组的 SID History 出了问题。那么怎么找出这些无法解析的 SID 和对应的组名呢?豆子写了个很简单的 powershell 命令来查找
在域 A 上以用户身份登录,执行下列命令,whoami 的结果先转化成 csv 文本,然后 powershell 再转化成结构化对象以便操作。
whoami /groups /fo csv | ConvertFrom-Csv | where{$_.type -match “Unknown SID type”} | select sid > K:\unknown.txt
结果如下
然后在域 B 上读取这个文本,进行 Sid 到组名的解析即可
$group=get-content K:\unknown.txt | select -skip 3
foreach ($sid in $group)
{
try{
$objSID = New-Object System.Security.Principal.SecurityIdentifier ($sid.TrimEnd())
$objUser = $objSID.Translate([System.Security.Principal.NTAccount])
write-host $objUser.Value
}
catch{
write-host “Catched error: $_.Exception.Message”
}
}
结果如下。