Als u informatie van PowerShell naar een CSV-bestand wilt verzenden, kan de cmdlet Export-CSV u daarbij helpen. Deze cmdlet bespaart beheerders zoveel tijd bij het omzetten van losse tekst naar een gestructureerd formaat. In plaats van te rommelen met Excel, kunnen we in plaats daarvan PowerShell gebruiken om CSV-bestanden te maken.
U kunt CSV-bestanden maken om rapporten te genereren, naar databases te sturen en meer vanuit elk PowerShell-object met behulp van de Export-Csv
cmdlet.
Het CSV-formaat is simpelweg een door komma’s gescheiden lijst van rijen opgeslagen als een tekstbestand. Omdat het gewoon een tekstbestand is, zouden we technisch gezien een generiek tekstbestand commando zoals Set-Content
kunnen gebruiken om de klus te klaren. Om een generiek commando te gebruiken, zouden we echter zelf de benodigde CSV-structuur moeten opbouwen. Waarom zouden we dat doen als we al een CSV-export commando hebben in Export-Csv
om CSV-output naar een bestand te sturen?
CSV-bestanden hebben een specifieke structuur. De mogelijkheid van deze cmdlet om informatie te begrijpen, te lezen en te transformeren naar CSV-bestanden is wat deze PowerShell cmdlet zo handig maakt.
Beheer en rapporteer over Active Directory, Exchange en Microsoft 365 met ManageEngine ADManager Plus. Download de gratis proefversie!
Objects -eq CSV-rijen
De cmdlet Export-Csv
heeft een enkel doel; het opslaan van PowerShell-objecten naar een CSV-bestand.
Laten we zeggen dat je een object hebt met twee eigenschappen genaamd foo
en bar
. Elk van deze eigenschappen heeft respectievelijke waarden van 1
en 2
. Wanneer je dat object naar Export-Csv
stuurt, zal het een CSV-bestand aanmaken met twee kolommen en een enkele rij. Je kunt dan de inhoud van de CSV importeren en inspecteren hoe het eruit ziet.
PowerShell behandelt in wezen een object in het geheugen en een CSV-bestand hetzelfde! Het weet ook dat mijn kolomlabels koppen moeten zijn. Objecten exporteren met behulp van deze cmdlet is als het opslaan van het object naar het bestandssysteem. Door de generieke tekst PowerShell-opdracht Get-Content
te gebruiken, kunnen we de ruwe tekst inspecteren om te zien wat de Export-Csv
-opdracht heeft geëxporteerd.
Merk op dat de opdracht dubbele aanhalingstekens gebruikt rond elke rijvermelding. Dit stelt je in staat om velden met spaties op te nemen.
Export-Csv Nuttige Parameters
In Windows PowerShell 5.1, Export-CSV cmdlet het type object dat het CSV-bestand heeft gemaakt. Als je liever deze regel niet ziet, is een populaire parameter NoTypeInformation
die deze regel volledig elimineert.
Als je werkt met veel verschillende CSV-bestanden of gegevensbronnen, zou je op de harde manier kunnen leren dat Export-CSV bestaande bestanden overschrijft. Geen probleem als je echter de Append
-parameter gebruikt. De Append
-parameter stelt je in staat om rijen aan het CSV-bestand toe te voegen in plaats van een bestaand bestand te overschrijven.
Een andere handige parameter is Delimiter
. Af en toe moet je mogelijk een CSV-bestand maken dat de gebruikelijke lijstscheider (komma) niet gebruikt om velden te scheiden. Misschien moet je in plaats daarvan een bestand maken met veel gegevens dat tabbladen of zelfs puntkomma’s als scheidingstekens gebruikt. De Export-Csv
PowerShell-cmdlet kan ons hiermee helpen door de gewenste scheidingsteken op te geven.
Omgaan met aanhalingstekens
Bij het maken van CSV-rijen sluit Export-Csv
alle velden in aanhalingstekens. In sommige situaties is dit misschien niet wenselijk. Helaas is er geen manier om dat te voorkomen. Maar door een beetje meer code te gebruiken, kun je dit voor elkaar krijgen.
Hieronder zie je een voorbeeld van het maken van het CSV-bestand. Vervolgens leest Get-Content
het ruwe tekstbestand, vervangt alle dubbele aanhalingstekens in het geheugen door niets. Vervolgens schrijft Set-Content
die informatie in het geheugen terug naar de schijf.
Beheer en rapporteer over Active Directory, Exchange en Microsoft 365 met ManageEngine ADManager Plus. Download gratis proefversie!
Samenvatting
De Export-Csv
cmdlet is een eenvoudig maar uiterst nuttig hulpmiddel voor het beheren van CSV-gegevens. Het kan de structuur van een CSV-gegevensbestand begrijpen en PowerShell-objecten omzetten in CSV-rijen.
I’m not about to go back to batch, or VBScript where creating a CSV file from an existing object required instantiating a FileSystemObject, creating a loop and a bunch of Write()
methods!
Deze opdracht is opnieuw een goede reden om vandaag nog met het schrijven van PowerShell-code te beginnen!