簡體   English   中英

如何使用Powershell進行兩個CSV文件的多對多合並?

[英]How to do a many to many merge of two CSV files with Powershell?

我有兩種不同的CSV。 一個是全球團體,地方團體和系統的報告。 另一個是用戶,登錄ID和全局組的列表。

如您所見,Global AD Groups是公共列,在兩個文件中均標記為“ Members”。 成員中的某些項目實際上是本地用戶或域用戶。 需要過濾掉本地用戶,並且需要將域用戶移植到結果中。

使這項任務變得困難的原因是聯接是多對多的。 另外,我需要能夠輕松地向腳本添加新列。 我已經知道如何獲取您創建的任何腳本的輸出,並根據需要對列進行重新排序。

理想情況下,每個CSV文件中的哪些列都無關緊要,並且腳本應基於公共列將兩個文件中的所有列連接在一起。 雖然,如果在調用函數時可以指定common列會很好。

因此樣本數據如下所示:

$CSV1
"Members","LocalGroup","System"
"System1\local-user","Guests","System1"
"adminaccounts","Administrators",System2"
"adminaccounts","Auditors","System2"
"System3\User1","Administrators","System3"
"System3\Temp","Guests","System3"
"System4\Temp","Guests","System4"
"System5\Temp","Guests","System5"
"Domain1\ngd","Users","System6"
"Domain1\Group1","Administrators","System7"
"Domain1\Group1","Administrators","System8"
"Domain1\Group1","Administrators","System9"
"Domain1\Group1","Administrators","System10"
"Domain1\Group2","Administrators","System1"
"Domain1\Group2","Administrators","System4"
"Domain1\Group2","Administrators","System7"
"Domain1\Group3","Administrators","System3"
"Domain1\Group3","Administrators","System1"
"Domain1\Group4","Administrators","System4"
"Domain2\Group1","Administrators","System5"
"Domain2\Group1","Administrators","System6"
"Domain2\Group1","Administrators","System2"

$CSV2
"Members","Username","Logon ID"
"Domain1\Group1","Pauline S. Trotter","pst"
"Domain1\Group1","Caroline T. Gartner","ctg"
"Domain1\Group1","Albert F. Hollis","afh"
"Domain1\Group1","Todd C. Cope","tcc"
"Domain1\Group1","Rebecca D. Bergman","rdb"
"Domain1\Group1","Robert A. Wagner","raw"
"Domain1\Group2","Daniel R. Dalton","drd"
"Domain1\Group2","Christopher V. Alderbrook","cva"
"Domain1\Group2","Brittany L. Stone","bls"
"Domain1\Group2","Susan K. Holman","skh"
"Domain1\Group2","Mark P. Bett","mpb"
"Domain1\Group2","Francine U. Zen","fuz"
"Domain1\Group2","Holly M. Fulton","hmf"
"Domain1\Group3","Edgar X. Indiana","exi"
"Domain1\Group3","John Q. Pullit","jqp"
"Domain1\Group3","Victor E. Emmerson","vee"
"Domain1\Group3","Robert A. Wagner","raw"
"Domain1\Group3","Pauline S. Trotter","pst"
"Domain1\Group4","Noreen G. Dulles","ngd"
"Domain1\Group4","Lois H. Crantz","lhc"
"Domain1\Group4","Brad F. Quilt","bfq"
"Domain1\Group4","Zoren T. Maranda","ztm"
"Domain1\Group4","William K. Entz","wke"
"Domain1\Group4","Quils U. Naruz","qun"
"Domain2\Group1","Zoren T. Maranda","ztm"
"Domain2\Group1","Robert A. Wagner","raw"
"Domain2\Group1","Holly M. Fulton","hmf"
"Domain2\Group1","Brad F. Quilt","bfq"
"Domain2\Group1","Pauline S. Trotter","pst"
"Domain2\Group1","Noreen G. Dulles","ngd"

在此先感謝您的幫助。

問候,

亞歷克斯

這是一些帶有示例輸出的簡化數據:

$CSV1 
"Members","LocalGroup","System" 
"System1\local-user","Guests","System1" 
"adminaccounts","Administrators",System2" 
"adminaccounts","Auditors","System2" 
"System3\User1","Administrators","System3" 
"System3\Temp","Guests","System3" 
"System4\Temp","Guests","System4" 
"System5\Temp","Guests","System5" 
"Domain1\ngd","Users","System6" 
"Domain1\Group1","Administrators","System7" 
"Domain1\Group1","Administrators","System8" 
"Domain1\Group2","Administrators","System1" 
"Domain1\Group3","Administrators","System3" 
"Domain1\Group3","Administrators","System1" 
"Domain1\Group4","Administrators","System4" 
"Domain2\Group1","Administrators","System5" 

$CSV2 
"Members","Username","Logon ID" 
"Domain1\Group1","Pauline S. Trotter","pst" 
"Domain1\Group1","Caroline T. Gartner","ctg" 
"Domain1\Group1","Albert F. Hollis","afh" 
"Domain1\Group2","Daniel R. Dalton","drd" 
"Domain1\Group2","Christopher V. Alderbrook","cva" 
"Domain1\Group3","Pauline S. Trotter","pst" 
"Domain1\Group4","Noreen G. Dulles","ngd" 
"Domain1\Group4","Quils U. Naruz","qun" 
"Domain2\Group1","Zoren T. Maranda","ztm" 
"Domain2\Group1","Noreen G. Dulles","ngd" 

Output 
"Username","Logon ID","Members","LocalGroup","System" 
,,"System1\local-user","Guests","System1" 
,,"adminaccounts","Administrators",System2" 
,,"adminaccounts","Auditors","System2" 
,,"System3\User1","Administrators","System3" 
,,"System3\Temp","Guests","System3" 
,,"System4\Temp","Guests","System4" 
,,"System5\Temp","Guests","System5" 
"Pauline S. Trotter","pst","Domain1\Group1","Administrators","System7" 
"Pauline S. Trotter","pst","Domain1\Group1","Administrators","System8" 
"Pauline S. Trotter","pst","Domain1\Group3","Administrators","System3" 
"Pauline S. Trotter","pst","Domain1\Group3","Administrators","System1" 
"Caroline T. Gartner","ctg","Domain1\Group1","Administrators","System7" 
"Caroline T. Gartner","ctg","Domain1\Group1","Administrators","System8" 
"Albert F. Hollis","afh","Domain1\Group1","Administrators","System7" 
"Albert F. Hollis","afh","Domain1\Group1","Administrators","System8" 
"Daniel R. Dalton","drd","Domain1\Group2","Administrators","System1" 
"Christopher V. Alderbrook","cva","Domain1\Group2","Administrators","System1" 
"Noreen G. Dulles","ngd","Domain1\Group4","Administrators","System4" 
"Noreen G. Dulles","ngd","Domain2\Group1","Administrators","System5" 
"Quils U. Naruz","qun","Domain1\Group4","Administrators","System4" 
"Zoren T. Maranda","ztm","Domain2\Group1","Administrators","System5" 

您可以使用Join-Collections腳本

$csv1 = import-csv csv1.csv
$csv2 = import-csv csv2.csv
$collection = Join-Collections -FirstCollection $csv1 -FirstJoinColumn Members -SecondCollection $csv2 -SecondJoinColumn Members
$collection | export-csv result.csv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM