最近迁徙了一些用户从域A转到另外一个域B,为了方便继续访问旧的文件系统,保留了SID历史记录。今天发现个别运行在旧域A的 Citrix Xenapp程序不工作了。
经过检查,发现该程序启动的时候会自动运行 whoami /group自检,如果有无法解析的SID,自动结束。估计是迁徙的时候某些组的SID History出了问题。那么怎么找出这些无法解析的SID和对应的组名呢?豆子写了个很简单的powershell命令来查找
在域A上以用户身份登录,执行下列命令,whoami的结果先转化成csv文本,然后powershell再转化成结构化对象以便操作。
1
|
whoami /groups /fo csv |
ConvertFrom-Csv
| where{
$_
.type
-match
"Unknown SID type"
} | select sid > K:\unknown.txt
|
结果如下
然后在域B上读取这个文本,进行Sid到组名的解析即可
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$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"
}
}
|
结果如下。
本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1612267,如需转载请自行联系原作者