<# .NOTES Alan Kaplan 8/5/16, 10/1/16 .SYNOPSIS Reads CSV file and export list to be used as splat input .DESCRIPTION This script takes configuration data from a CSV file and exports each line into an array of hash tables which can be used to splat .PARAMETER CSVFile Path to CSV File with headers to be imported as splat data .EXAMPLE # ================== #Example Splat function function Test-Splat { Param ($Domain, $Computer, $DNSServer, $IP ) Write "$Domain `t $Computer `t $IP `t $DNSServer" } # Example Data ### $testdata = @" Computer,IP,DNSServer,Domain Comp1,192.168.1.1,10.1.1.1,DomA Comp2,192.168.1.2,10.1.1.2,DomA Comp3,192.168.1.3,10.1.1.3,DomA Comp4,192.168.1.4,10.1.1.4,DomA Comp5,192.168.1.5,10.1.1.5,DomA Comp6,192.168.1.6,10.1.1.6,DomA Comp7,192.168.1.7,10.1.1.7,DomA Comp8,192.168.1.8,10.1.1.8,DomA Comp9,192.168.1.9,10.1.1.9,DomA "@ #Create file from example $datafile = "$env:userprofile\Desktop\Test.csv" if (!(Test-Path $datafile)){$testdata | set-content $datafile} #Get Splat data $splatdata = Export-CSVtoSplats $datafile #send each to function $splatdata |foreach {$splat = $_;Test-Splat @splat} #> Function Export-CSVtoSplats ($CSVFile){ $aRetval = @() $Content = get-content $CSVfile $AHeader = $Content[0].Split(",") for ($LineCount = 1; $LineCount -lt $Content.Length; $LineCount++) { $SplatParams = @{} $vals=$Content[$LineCount].Split(",") for ($Ctr = 0; $Ctr -lt $aHeader.Length; $Ctr++) { [string]$k = $aHeader[$ctr] [string]$v= $vals[$ctr] $SplatParams[$k]=$v } $aRetval +=$SplatParams } $aRetval }