【发布时间】:2016-03-18 00:04:25
【问题描述】:
我正在尝试找出最好的方法来做到这一点,但我不确定如何通过同一管道使用 2 个不同的文件 Import-Csv 并导出找到的值...
让我们从 CSV 文件 1 开始:我只想要 LoginNumber 的值,其中 Type = H and (ContractorDomain -ne $null -or ContractorDomain -ne "")。例如,这应该只从下面提取值 0031482 和 2167312。
注意:我只是添加了空格和箭头,以便在此处作为列更易于阅读。 csv 文件的列值或箭头之间没有空格。
"LoginNumber","Type","ContractorDomain"
"0031482" ,"H" ,"P12345" <<
"1251632" ,"P" ,"A52671"
"2167312" ,"H" ,"425126" <<
"0598217" ,"L" ,""
"1405735" ,"H" ,""
"2058194" ,"A" ,"L21514"
当找到LoginNumber 的值编号(基于上述条件)时,在CSV 文件2 中搜索它。然后获取AccountStatus 和SamAccountName 的值以获取UserIDNumber 的各自值。
"SamAccountName","UserIDNumber","AccountDescriptionDetails","AccountStatus"
"jd12395" ,"0052142" ,"Company CEO" ,"Enabled"
"jwet" ,"2167312" ,"Software Developer" ,"Disabled" <<
"1b3gas5" ,"1385293" ,"Project Manager" ,"Disabled"
"632g1fsa" ,"0031482" ,"QA Tester" ,"Enabled" <<
"4126hs" ,"0000418" ,"Program Manager" ,"Disabled"
"axv" ,"1840237" ,"Accountant Administrator" ,"Disabled"
对于第三个 CSV 文件,我们有以下内容:
"domainName","SameAccountName","DateExpired"
"TempDomain","jwet" ,"20151230" <<
"PermDomain","p21942" ,""
"PermDomain","qz231034" ,""
"TempDomain","632g1fsa" ,"20151231" <<
"TempDomain","ru20da2bb22" ,"20160425"
接下来,对于第 3 个文件,我想添加列以插入 Disabled 和 Enabled 值(或 User Match Not Found 值):
"domainName","SameAccountName","DateExpired","UserStatus"
"TempDomain","jwet" ,"20151230" ,"Disabled" <<
"PermDomain","p21942" ,"" ,"User Match Not Found"
"PermDomain","qz231034" ,"" ,"User Match Not Found"
"TempDomain","632g1fsa" ,"20151231" ,"Enabled" <<
"TempDomain","ru20da2bb22" ,"20160425" ,"User Match Not Found"
我学会了如何导入 csv 并使用类似的东西创建新列...
Import-Csv $file | Select-Object -Property *, @{Name="UserStatus";Expression={
if ($true) {"fill value in here"}
}} | Export-Csv $newFile -NoType
所以我在想这样的事情。我只是不确定如何通过管道搜索/查找/传递多个 CSV 文件值。
注意:其中一些 CSV 文件在我们要搜索的列之前和之后有大约 15 列。此外,一些列值有逗号,所以我不能真正依赖-Delimiter ,。此外,某些列值没有 "(如果您要以 txt 格式打开 CSV)。
【问题讨论】:
标签: csv powershell powershell-3.0