我有一个包含两列的CSV文件。
示例数据:
Computername,Collection Name
MyServer01,NA - Data - SRV - Patching - Prod - Sat 18:00
MyServer02,NA - Data - SRV - Patching - Prod - Sat 22:00
MyServer03,NA - Data - SRV - Patching - Prod - Sat 02:00
MyServer04,NA - Data - SRV - Patching - Prod - Fri 18:00
MyServer05,NA - Data - SRV - Patching - Prod - Fri 02:00
MyServer06,NA - Data - SRV - Patching - Prod - Sun 18:00
我希望将CSV拆分为集合中的单独文件。如上例所示,周六18:00
到目前为止,我有代码:
$data=Import-Csv .\servers2.csv
$data | Where-Object {$_ -like '*fri*' -and $_.'Collection Name' -notmatch 'all.da.servers'} | Select ComputerName,'Collection Name'
最终目标是基于集合的多个文本文件。所以Servers-Fri-1800.txt
和Fri-1800.txt
。服务器名称将存在于Servers * .txt中,而Fri-1800.txt将包含格式为12-11-15 18:00
我想先问一下,因为有些东西告诉我这种方法可能非常无穷无尽。 -Thanks !!
-Edit,所需的输出。 **值得注意的是,这些文本文件将被另一个Powershell脚本读取,因此认为具有过滤属性的PSCustom
对象的理由是理想的。
Servers-Sat-1800.txt
包含MyServer01
,Sat-1800.txt
包含12-11-15 18:00
Servers-Sat-2200.txt
包含MyServer02
,Sat-2200.txt
包含12-11-15 22:00
-edit 2,添加代码预览。有没有更简单的方法来实现这一目标?
$data = import-csv .\file.csv
$data | Where-Object {$_ -like '*sat?18:00*' -and $_.'Collection Name' -notmatch 'ignore.string'} |
% {"{0}" -f $_.Computername} | out-file Servers-Sat-1800.txt
答案 0 :(得分:3)
尝试使用Group-Object命令。这是为了拍摄大量的物品并将它们组合在一起。
我拿了你的样本并做了几次迭代
PCName,Collection
MyServer01, NA - Data - SRV - Patching - Prod - Sat 18:00
MyServer02, NA - Data - SRV - Patching - Dev - Sat 18:00
MyServer03, NA - Data - SRV - Patching - Dev - Sat 18:00
MyServer04, NA - Data - SRV - Patching - Prod - Sat 18:00
MyServer05, NA - Data - SRV - Patching - Prod - Sat 20:00
MyServer06, NA - Data - SRV - Patching - Prod - Sat 20:00
将其保存为名为T:\ comps.csv的CSV。现在,为每个集合组织不同的CSV。
$groups = import-csv T:\comps.csv | Group-Object -Property Collection
ForEach ($group in $groups){
$name = $group.Name -replace ':',''
$group | select PCName | Export-Csv -Path "t:\$Name.csv"
}
不得不删除':'从集合名称,但最终结果是一堆CSV,名称正确,内部有正确的成员。
>dir t:\ *.csv
Directory: T:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
12/11/2015 5:16 PM 375 comps.csv
-a---- 12/11/2015 5:26 PM 98 NA - Data - SRV - Patching - Dev - Sat 1800.csv
-a---- 12/11/2015 5:26 PM 99 NA - Data - SRV - Patching - Prod - Sat 1800.csv
-a---- 12/11/2015 5:26 PM 98 NA - Data - SRV - Patching - Prod - Sat 2000.csv
>gc 'T:\NA - Data - SRV - Patching - Dev - Sat 1800.csv'
#TYPE Selected.System.Management.Automation.PSCustomObject
"PCName"
"MyServer02"
"MyServer03"