Hvordan eksportere til CSV i PowerShell

Hvordan eksportere til CSV i PowerShell
CSV (komma -separerte verdier) er en måte å lagre data i vanlig tekstfiler. Det er en effektiv metode for å dele strukturert informasjon, lik et regneark. Det er et universelt format som støttes av en rekke kontor- og databaseapplikasjoner.

Begrepet CSV har også andre betydninger, for eksempel "karakterskilt verdier", "komma avgrensede filer" osv.

I denne guiden vil vi demonstrere hvordan du eksporterer data i CSV i PowerShell.

CSV -filstrukturen

CSV -formatet følger en veldig enkel struktur. Enhver CSV -fil vil ha “.CSV ”som filforlengelse. Her har jeg generert en prøve CSV -fil som inneholder

$ katteprøve.CSV

Som vi ser, inneholder hver linje flere verdier atskilt med komma. Det er ingen grense for hvor mange oppføringer en CSV -fil kan inneholde.

Enkelheten i strukturen er nøkkelfunksjonen. CSV -formatet er designet slik at det enkelt kan brukes til å eksportere data til andre programmer. Resultatet er også menneskelig lesbart og kan sees ved hjelp av hvilken som helst tekstredigerer. Kontorapper som MS Excel, Calc, etc., Støtt også CSV som standard.

Eksporterer til CSV fra PowerShell

PowerShell er et kraftig skall- og skriptspråk. Den støtter mange grunnleggende og avanserte funksjoner, inkludert eksport av forskjellige data til CSV -format.

I likhet med ethvert annet skall, har PowerShell sitt eget sett med kommandoer, kalt cmdlets. For å eksportere til CSV, kommer PowerShell med en dedikert cmdlet Eksport-CSV. Det tar et objekt som inngangen og eksporterer det til en CSV -fil.

På grunn av den enkle strukturen kan den også oppnås ved å bruke Sett-innhold cmdlet. Imidlertid krever det at du manuelt definerer CSV -strukturen. Ved hjelp av Eksport-CSV reduserer arbeidsmengden betydelig.

Hjelpesiden til Export-CSV vil vise alle de støttede kommandoene.

$ Hjelp eksport-CSV

Et praktisk eksempel vil være å eksportere listen over løpsprosesser. Det kan være nyttig i visse feilsøkings-/overvåkningsscenarier. For å få listen over prosesser, bruker vi cmdlet Få prosess.

$ Get-Process

Nå, rør utgangen til Eksport-CSV.

$ Get-Process | Export -CSV -Path/Home/Viktor/Desktop/Processes.CSV

Her beskriver flagget "-Path" stedet for å lagre den genererte CSV-filen. For å sjekke innholdet i CSV -filen, bruk cmdlet Få innhold.

$ Get Content/Home/Viktor/Desktop/Processes.CSV

Tilpasset avgrenser

For enhver CSV -fil er det standard å bruke komma (,) som avgrenseren. Imidlertid kan det være lurt å endre avgrenser til noe annet enn et komma i visse situasjoner. Export-CSV CMDLET støtter å sette en tilpasset avgrenser for CSV-filen. Det kan være hvilken som helst karakter.

I det følgende eksemplet bruker vi en semikolon (;) som avgrenseren.

$ Get-Process | Eksport -csv -NotypeInformation -Delimiter ";" -Path/Home/Viktor/Desktop/Processes.CSV

La oss sjekke output fra kommandoen.

$ Get Content/Home/Viktor/Desktop/Processes.CSV

Leseren til eksisterende CSV -fil

De Eksport-CSV CMDLET støtter å legge til innhold til eksisterende CSV -filer. Det kan bidra til å samle data i en enkelt database.

For å legge til, legg til flagget “-Append”. Bruk plasseringen av den eksisterende CSV-filen som verdien for "-Path".

$ Get-Process | Export -CSV -Append -Path/Home/Viktor/Desktop/Processes.CSV

Velge egenskaper for å skrive til CSV

La oss se raskt på utdataene fra get-prosessen først.

$ Get-Process

Her viser hver eneste kolonne en viss type info om de som kjører prosesser for øyeblikket. Hver av kolonnene representerer en egenskap til den tilhørende prosessen. Så langt har vi jobbet med alle egenskapene til prosessene (overført dem til en CSV -fil). Imidlertid er ikke alle egenskapene nødvendige for hver eneste situasjon.

Vi kan legge til et mellomfilter for å få noen få utvalgte av egenskapene. For å gjøre det, tar vi hjelp av en annen cmdlet SELECT-Object.

Vi eksporterer bare prosessnavnet (prosessnavn) og ID (ID) i følgende eksempel.

$ Get-Process | Select -Object -egenskaper ProcessName, ID | Eksport -CSV -Notypeinformasjon -Path/Home/Viktor/Desktop/Processes.CSV
$ Get Content/Home/Viktor/Desktop/Processes.CSV

Ingen overskriving

Hvis ikke legger til den eksisterende filen, vil Export-CSV overskrive den eksisterende filen som standard. I mange situasjoner kan dette forårsake uberettiget sletting av viktige logger. For å unngå slike ulykker, kan vi fortelle eksport-CSV om ikke å overskrive en eksisterende fil som standard.

For å gjøre det, legg til flagget “-noclobber”.

$ Get-Process | Export -CSV -Noclobber -Path/Home/Viktor/Desktop/Processes.CSV

Som du ser, kaster det nå en feil som nevner at filen allerede eksisterer.

Overskriving av skrivebeskyttede filer

Som standard tillater ikke en skrivebeskyttet fil redigering. Vi kan imidlertid bruke PowerShell for å tvinge redigering til filen. Denne funksjonen er bakt rett inn i eksport-CSV. Måten det gjøres på er ved å umerkes filen som skrivebeskyttet, utføre redigeringen, og deretter markere den skrivebeskyttet igjen.

For å overskrive den eksisterende skrivebeskyttede filen, bruk flagget “-Force”.

$ Get-Process | Export -CSV -Append -Force -Path/Home/Viktor/Desktop/Processes.CSV

Filkoding

For filkoding bruker Export-CSV UTF-8 som standard. Det er den universelle kodingen for alle tekstfilene. Imidlertid er det mer fornuftig i spesifikke situasjoner. Heldigvis støtter eksport-CSV å definere spesifikk koding.

For å spesifisere en spesifikk koding, bruk flagget “-koding”.

$ Get-Process | Eksport -CSV -koding -Path/Home/Viktor/Desktop/Processes.CSV

Her er en liste over alle støttede kodingsformater.

  • Ascii
  • Unicode
  • Utf7
  • UTF8
  • Utf8bom
  • Utf8nobom
  • UTF32
  • Bigendianunicode

Siste tanker

Export-CSV Cmdlet i PowerShell er et kraftig verktøy for å eksportere informasjon til CSV-format. Denne guiden demonstrerer noen av måtene å eksportere-CSV. Det kan også implementeres i PowerShell -skript for å automatisere dataoverføring. Den konverterer strukturerte data til et enklere og brukerlesbart format som mange applikasjoner kan bruke.

Glad databehandling!