天天看点

Powershell查找Unknown Group

最近迁徙了一些用户从域A转到另外一个域B,为了方便继续访问旧的文件系统,保留了SID历史记录。今天发现个别运行在旧域A的 Citrix Xenapp程序不工作了。

经过检查,发现该程序启动的时候会自动运行 whoami /group自检,如果有无法解析的SID,自动结束。估计是迁徙的时候某些组的SID History出了问题。那么怎么找出这些无法解析的SID和对应的组名呢?豆子写了个很简单的powershell命令来查找

在域A上以用户身份登录,执行下列命令,whoami的结果先转化成csv文本,然后powershell再转化成结构化对象以便操作。

1

<code>whoami /groups /fo csv | </code><code>ConvertFrom-Csv</code> <code>| where{</code><code>$_</code><code>.type </code><code>-match</code> <code>"Unknown SID type"</code><code>} | select sid &gt; K:\unknown.txt</code>

结果如下

<a href="http://s3.51cto.com/wyfs02/M00/59/77/wKioL1TULRqhcdp7AAQuGGbKdDE784.jpg" target="_blank"></a>

然后在域B上读取这个文本,进行Sid到组名的解析即可

2

3

4

5

6

7

8

9

10

11

12

13

<code>$group</code><code>=</code><code>get-content</code> <code>K:\unknown.txt | select -skip 3</code>

<code>foreach</code> <code>( </code><code>$sid</code> <code>in</code> <code>$group</code><code>)</code>

<code>{</code>

<code>    </code><code>try{</code>

<code>        </code> 

<code>    </code><code>$objSID</code> <code>= </code><code>New-Object</code> <code>System.Security.Principal.SecurityIdentifier (</code><code>$sid</code><code>.TrimEnd()) </code>

<code>    </code><code>$objUser</code> <code>= </code><code>$objSID</code><code>.Translate( </code><code>[System.Security.Principal.NTAccount]</code><code>) </code>

<code>    </code><code>write-host</code> <code>$objUser</code><code>.Value</code>

<code>    </code><code>}</code>

<code>    </code><code>catch{</code>

<code>         </code><code>write-host</code> <code>"Catched error: $_.Exception.Message"</code>

<code>        </code><code>}    </code>

<code>}</code>

结果如下。

<a href="http://s3.51cto.com/wyfs02/M02/59/78/wKioL1TULcOThclVAAP7MTkgE5A828.jpg" target="_blank"></a>

本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1612267,如需转载请自行联系原作者

继续阅读