

Take the file simple.csv: Jack,35,United States Jill,22,United Kingdom. Note: Without an -Encoding argument, Windows PowerShell will use your system's "ANSI" character encoding (in PowerShell Core, you'd get BOM-less UTF-8). When you know the format of the csv file and the structure you need in the xml file, it's fairly straightforward to make a script that can handle the conversion. Note how -ov grp (short for: -OutVariable grp) captures Group-Object's output in each pipeline iteration in variable $grp, so that the Set-Content call later in the pipeline can access $grp.Name - the user ID at hand - in the script block passed to Set-Content so as to create an output file named for that user ID (a technique known as delay-bind script blocks).

$entryTemplate = file.csv -Delimiter ' ' | Group-Object UserId -ov grp | ForEach-Object $docTemplate = -join Per-certificate template. # *defer* expansion (interpolation) of the embedded expressions. # Note how a *literal* (single-quoted) here-string is used, so as to Here's a solution that uses string templating to provide the desired XML text output for each user, and writes that output to a file named fro the user ID: Per-user template. Here's a solution that uses string templating to provide the desired XML text output for each user, and writes that output to a file named fro the user ID: # Per-user template. Just paste your CSV in the input form below and it will automatically get converted to XML. Bacon Bits gave the crucial pointer in a comment: Use Group-Object to group the custom objects created from your CSV rows via Import-Csv by user ID. Bacon Bits gave the crucial pointer in a comment: Use Group-Object to group the custom objects created from your CSV rows via Import-Csv by user ID.
