ConvertTo-WebArchitect.psm1
<#
.Synopsis Convert Fujitsu XML to CSV format .Description The `ConvertTo-WebArchitect` cmdlet import transaction Fujitsu XML into a series of character-separated value (CSV) strings. .Parameter inFile Specifies the objects that are converted to CSV strings. Enter a variable that contains the objects or type a command or expression that gets the objects. .Parameter Master File path of WebArchitect master database. .Example ConvertTo-WebArchitect -inFile input.xml .LINK Project homepage: https://github.com/scout249/fujitsu-xml2csv #> #Installation #Install-Module -Name JoinModule function ConvertTo-WebArchitect { [CmdletBinding()] Param( [string]$inFile, [switch]$master ) $path = [Environment]::GetFolderPath('ApplicationData') $Colors = @{ ForegroundColor = "White" BackgroundColor = "Red" } if ($master -ne $true) { if ((Test-Path "$path\WebArchitectMaster.txt") -ne $true) { Write-Host "Please run 'Convert-WebArchitect -master' to provide master database (Missing)" @colors } elseif ($inFile -eq '') { Write-Host "Please run 'Convert-WebArchitect -inFile <<YOUR XML FILE>>' to convert to CSV (Missing)" @colors } else { ## Define variables $masterFile = gc "$path\WebArchitectMaster.txt" #Define Variable #$baseDir = "C:\XML2CSV" #$inFile = "Multi Configuration.xml" $outFile = -join($inFile, ".csv") $temp = "temp.txt" #Remove <Components> Tag (gc $inFile -raw) | % { $_ -replace '</Components>\s*</Component>' ` -replace '<Components>', '</Component>' } | Set-Content $temp #Convert XML to CSV [xml]$xmlin = Get-Content $temp $xmlin.Order.Systems.Component | select ` @{N="Part Number"; E={$_.SachNr}}, @{N="Quantity"; E={$_.Count}}, @{N="Unit Price"; E={"0"}} | epcsv $outFile -NoTypeInformation #Merge Tables $importMaster = ipcsv $masterFile | Select "Product Name", "Part Number", "CP Figure Number" ipcsv $outFile | InnerJoin $importMaster -On "Part Number" | Select "Product Name", "Part Number", "CP Figure Number", "Quantity", "Unit Price" | epcsv temp.txt -NoTypeInformation #Append to CSV file Add-Content $temp ",,,,Total Price`n,,,,0" del $outFile rni $temp $outFile } } else { Read-Host -Prompt "`nPlease provide master file" | Out-File $path\WebArchitectMaster.txt -Force Write-Host "`nYou can now run 'Convert-WebArchitect -inFile <<YOUR XML FILE>>' to convert files." -ForegroundColor Green Write-Host "If you need to change the path, please run 'Convert-WebArchitect -master' again`n" -ForegroundColor Green } } Export-ModuleMember -Function ConvertTo-WebArchitect |