這篇結案,我再另開一篇請教大家如何優化 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 給處理掉。
1.先撈出帳號名稱做成csv
2.根據csv檔撈出帳號資訊
3.根據csv撈出每個帳號的群組資訊
4.2和3利用excel vlookup函數處理
--------做完以上應該暫時可以處理掉人工耗費時間過多問題-------
最後找時間將1~4用Powershell一次處理掉
相關資源關鍵字基本都是powershell