iT邦幫忙

0

網域使用者帳號清查

  • 分享至 

  • xImage

這篇結案,我再另開一篇請教大家如何優化 Script 。

謝謝!


大家好,資深菜鳥工程師又來求救了。

聽同事講,一直以來每年的網域使用者帳號清查有一大部份都是「人工作業」,有些資料無法從 AD 中順利撈出,所以我想將作業簡化一下,雖然一年一次,但是把時間花在這樣的事情上,有點浪費生命的感覺。

要的資料其實也很簡單,姓名、員工編號、單位名稱、郵件名 (@前面那串) 跟特定群組,目前已經用 PowerShell 裡的 Get-ADUser 指令取得前四個欄位的值,目前卡在特定群組。

目前網域內有兩大群組 (用 A B 表示),兩個群組下又各有許多小群組,若是不特別過濾,每個人的所有群組都會顯示,現在的問題是只想要顯示 B 群組,且只想要顯示小群組名,而不是什麼 CN=xxx,OU=B,OU=yyyy.......,這樣的結果,目前網路查了一下資訊,大多只有針對一個人去過濾顯示,而且僅顯示群組而無法將這個人跟這些群組做連結,不知道有什麼寫法,可以把那五個欄位全部一次顯示 (寫入文字檔中) ?
----- 更新 -----
假設 B 群組中有 BA BB BC BD BE 五個次群組,001 這個使用者是 BA BB 群組成員,002 是 BA BC BE 群組成員,003 是五個群組的成員。
現在在想辦法產生出一個 CSV 格式的檔案,"001","BA BB" "002","BA BC BE" "003","BA BB BC BD BE",若是能達到,也就可以跟前面的資料在 Excel 中結合。
但是目前還沒有辦法達到過濾群組以及只顯示 BA 而不是 CN=BA,OU=B,OU=yyyy.... 這樣的格式。
----- 再更新 -----
或者說,有沒有什麼資源或是書本有在教類似 Linux 的 Shell Script 寫法的?我也可以依樣畫葫蘆的去學,目前東西都撈得出來,只是好像沒有辦法把資料過濾成我要的,感覺差最後一步。
----- 再再更新 -----
目前已用笨方法可以產出所要的資料,剩下最後一個個人龜毛的問題。
因為是用 out-file 加上參數 -NoNewline ,但是在輸出群組那部份,因為是多筆資料一筆一筆比對,所以在這邊的 out-file 並沒有加上 -NoNewline ,這樣在存成 CSV 並直接開啟時,這多筆被 " 包起來的資料就會在同一個儲存格,只是在 out-file 結尾的 " 前那個 out-file 是中間多了一個換行符號,所以在 Excel 的儲存格裡就會多一個空白行,不知道這個有沒有沒辦法處理掉?

write-output """" | out-file -filepath xxxx.csv -nonewline -append
write-output $aaa | out-file -filepath xxxx.csv -append
write-output """" | out-file -filepath xxxx.csv -append

因為第二行其實是用 foreach 跑的,所以不會只有一筆,所以一時之間想不出要怎麼把最後一個 newline 給處理掉。

看更多先前的討論...收起先前的討論...
是要查詢每個群組成員是否包含特定群組, 而該群組成員是否包含使用者?
canchang iT邦新手 3 級 ‧ 2024-08-02 18:06:03 檢舉
我更新補充了。
想知道每個使用者加入了那些特定群組。
setsuna iT邦新手 1 級 ‧ 2024-08-03 16:17:55 檢舉
你用powershell將抓出的字串分割,然後去掉多餘的字串就好了
canchang iT邦新手 3 級 ‧ 2024-08-03 16:53:33 檢舉
其實,從網路有找到單一帳號去處理我所想要的需求,可以達到我想要的,但是有兩個問題目前還不知道怎麼解決。
1. 上百個帳號,要怎麼處理?我有嚐試過,好像也是可以達到,但是又有第二個問題。
2. 所得出來的次群組的資料,並無法跟帳號做連結,其實我還很貪心的希望,若是一個帳號分別屬於三個次群組,在 Excel 中呈現的希望是帳號一個儲存格,三個次群組一個儲存格。
3. 更貪心的是「姓名」、「員工編號」、「單位名稱」跟「郵件名」都各自一個儲存格,然後次群組不管有幾個都是一個儲存格。
setsuna iT邦新手 1 級 ‧ 2024-08-03 21:06:38 檢舉
你講的應該都可以做到
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
runan5678
iT邦研究生 1 級 ‧ 2024-08-04 12:04:40

1.先撈出帳號名稱做成csv
2.根據csv檔撈出帳號資訊
3.根據csv撈出每個帳號的群組資訊
4.2和3利用excel vlookup函數處理
--------做完以上應該暫時可以處理掉人工耗費時間過多問題-------
最後找時間將1~4用Powershell一次處理掉

相關資源關鍵字基本都是powershell

canchang iT邦新手 3 級 ‧ 2024-08-05 09:25:44 檢舉

謝謝回應,目前除了群組過濾這個問題外,其他的都已可以用 PowerShell 指令再搭配 Excel 的 vlookup 來完成,其至我還很無聊的將資料依科室及頭銜來排序。
因為群組裡有兩個「大群組」,各自有許多次群紅,而撈出的資料只需要其中一個群組的次群組,而且希望這個次群組資料在 CSV 或是開出來的 Excel 中,一個帳號的次群組是放在一個儲存格中,目前算是卡在這。

我要發表回答

立即登入回答