Import-Csv to cmdlet PowerShella, który czyta plik CSV i zamienia każdy wiersz na obiekt (PSCustomObject) z właściwościami odpowiadającymi kolumnom z nagłówka. Dzięki temu nie grzebiesz w surowym tekście, tylko od razu pracujesz na danych w potoku — filtrujesz, sortujesz, liczysz i przekazujesz dalej do ForEach-Object czy Where-Object. To podstawowe narzędzie, gdy musisz przemielić eksport z Excela, AD albo dowolnego systemu, który pluje CSV-kami.
Składnia i najważniejsze opcje
Podstawowa forma: Import-Csv [-Path]
-Path— ścieżka (lub kilka ścieżek) do pliku CSV; akceptuje symbole wieloznaczne i można ją podać przez potok.-LiteralPath— to samo co-Path, ale ścieżka brana dosłownie, bez interpretacji znaków typu*czy[ ]. Ratunek dla nazw z nawiasami.-Delimiter— znak rozdzielający kolumny; domyślnie przecinek. Dla średnika podaj-Delimiter ';'.-Header— własne nazwy kolumn, gdy plik ich nie ma (albo chcesz je nadpisać). Pamiętaj, żeby usunąć oryginalny wiersz nagłówka.-Encoding— kodowanie pliku; domyślnieutf8NoBOM. Przydaje się przy polskich znakach z plików ANSI.-UseCulture— bierze separator listy z bieżącej kultury systemu (sprawdzisz go przez(Get-Culture).TextInfo.ListSeparator). W polskim systemie to zwykle średnik.
Przykłady użycia
Import-Csv .\uzytkownicy.csv— wczytuje plik i zwraca obiekty z kolumnami jako właściwościami.Import-Csv .\dane.csv -Delimiter ';'— czyta plik z polskim Excelem, gdzie separatorem jest średnik.Import-Csv .\osoby.csv | Where-Object { $_.Wiek -gt 30 }— filtruje wiersze, w których kolumnaWiekprzekracza 30.Import-Csv .\bez_naglowka.csv -Header Imie,Nazwisko,Email— przypisuje nazwy kolumn plikowi, który ich nie ma.Import-Csv .\stary.csv -Encoding ansi | Export-Csv .\nowy.csv -NoTypeInformation -Encoding utf8— konwertuje plik z ANSI na UTF-8 bez psucia polskich znaków.
Częste błędy i pułapki
Najczęstsza wpadka to zły -Delimiter. Jeśli plik ma średniki, a Ty czytasz domyślnym przecinkiem, PowerShell nie rozbije wierszy na kolumny — dostaniesz obiekty z jedną właściwością, której nazwą jest cały nagłówek. Wygląda to jak uszkodzony plik, a to tylko zła flaga.
Drugi klasyk: używasz -Header, ale nie usuwasz oryginalnego nagłówka z pliku — wtedy pierwszy wiersz tekstu wleci jako zwykły obiekt z danymi. Trzeci to kodowanie: pliki z polskimi ogonkami zapisane w ANSI potrafią dać krzaki, jeśli nie podasz -Encoding ansi. I pamiętaj, że Import-Csv ładuje całość do pamięci — przy plikach na gigabajty lepiej czytać strumieniowo przez Get-Content z ConvertFrom-Csv kawałkami.
Powiązane komendy: Export-Csv, ConvertFrom-Csv, ConvertTo-Csv, Get-Content, Where-Object, ForEach-Object.