天天看點

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,如需轉載請自行聯系原作者

繼續閱讀