最近遷徙了一些使用者從域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 > 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,如需轉載請自行聯系原作者