A customer required the inventory of product keys for various products on all network systems.
I had used a tool which scanned all machines and nicely produced a .csv file for each machine it had scanned.
Ideally I wanted to have a single .csv file which I could then filter against, either using Excel or PowerShell.
Check the examples notes on how to use the function.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
function Merge-CSV{
<#
.SYNOPSIS
Easily merge multiple .csv files into one
.DESCRIPTION
Easily merge multiple .csv files into one using splatting to a temporary Output variable
and adding the content of each .csv file to this Output variable.
Once each .csv file has been processed, the Output variable is written to a new .csv file.
.PARAMETER SourceFiles
Enter paths to multiple .csv files which you would like to merge
.PARAMETER OutputFile
Enter filename/path for the merged file
.NOTES
Name: Merge-CSV.ps1
author: Robert Prüst
DateCreated: 12-06-2015
.EXAMPLE
$Licenses = Get-ChildItem -Path c:\Licenses\Export -Filter *.csv
Merge-CSV -SourceFiles $Licenses -OutputFile c:\Licenses\Overview.csv
#>
[Cmdletbinding()]
param (
[array]$SourceFiles,
[string]$OutputFile
)
$Output = @()
foreach ($File in $SourceFiles){
$TempFile = Import-Csv $File.FullName
$Output += $TempFile
}
$Output | Export-CSV $OutputFile -NoTypeInformation
}
|
Happy scripting! 🙂