Jak eksportować do CSV w PowerShell

Jak eksportować do CSV w PowerShell
CSV (wartości oddzielone przecinki) to sposób przechowywania danych w zwykłych plikach tekstowych. Jest to skuteczna metoda udostępniania informacji o strukturze, podobnie jak arkusz kalkulacyjny. Jest to uniwersalny format wspierany przez liczne aplikacje biurowe i bazy danych.

Termin CSV ma również inne znaczenia, na przykład „wartości oddzielone znakami”, „pliki wyznaczone przez przecinek” itp.

W tym przewodniku pokazamy, jak eksportować dane w CSV w PowerShell.

Struktura pliku CSV

Format CSV ma bardzo prostą strukturę. Każdy plik CSV będzie miał „.CSV ”jako rozszerzenie pliku. Tutaj wygenerowałem przykładowy plik CSV zawierający

próbka $ cat.CSV

Jak widzimy, każda linia zawiera kilka wartości oddzielonych przecinkami. Nie ma ograniczeń co do liczby wpisów, które może zawierać plik CSV.

Prostota struktury jest kluczową cechą. Format CSV został zaprojektowany tak, aby można go było łatwo wykorzystać do eksportowania danych do innych programów. Wynik można również czytać człowieka i można go przeglądać za pomocą dowolnego edytora tekstu. Aplikacje biurowe, takie jak MS Excel, Calc itp., Domyślnie wspieraj również CSV.

Eksportowanie do CSV z PowerShell

PowerShell to potężna skorupa i język scenariuszy. Obsługuje wiele podstawowych i zaawansowanych funkcji, w tym eksport różnych danych do formatu CSV.

Podobnie jak każda inna powłoka, PowerShell ma swój własny zestaw poleceń, zwany cmdletami. Aby wyeksportować do CSV, PowerShell jest wyposażony w dedykowaną cmdlet Eksport-CSV. Bierze obiekt jako wejście i eksportuje go do pliku CSV.

Ze względu na prostą strukturę można ją również osiągnąć za pomocą Set-content CMDLET. Wymaga to jednak ręczne zdefiniowanie struktury CSV. Za pomocą Eksport-CSV znacząco zmniejsza obciążenie pracą.

Strona pomocy Export-CSV wyświetli wszystkie obsługiwane polecenia.

$ Pomoc Export-CSV

Praktycznym przykładem byłoby wyeksportowanie listy uruchomionych procesów. Może to być przydatne w niektórych scenariuszach debugowania/monitorowania. Aby uzyskać listę procesów, użyjemy cmdlet Proces.

$ GET-Process

Teraz wypisz wyjście do Eksport-CSV.

$ GET-Process | Eksport -CSV -Path/Home/viktor/Desktop/Processes.CSV

Tutaj flaga „-path” opisuje lokalizację, aby zapisać wygenerowany plik CSV. Aby sprawdzić zawartość pliku CSV, użyj CMDLET Pobierz zawartość.

$ Get-content/home/viktor/komputer/procesy.CSV

Niestandardowy ogranicznik

W przypadku dowolnego pliku CSV standardem jest użycie przecinka (,) jako ogranicznika. Jednak możesz chcieć zmienić ogranicznik na coś innego niż przecinek w niektórych sytuacjach. CMDLET Export-CSV obsługuje ustawienie niestandardowego ogranicznika dla pliku CSV. Może to być dowolna postać.

W poniższym przykładzie będziemy używać półkolisu (;) jako ogranicznika.

$ GET-Process | Eksport -CSV -NotypeInformation -Delimiter ";" -Path/home/viktor/komputer/procesy.CSV

Sprawdźmy wyjście polecenia.

$ Get-content/home/viktor/komputer/procesy.CSV

Dołączenie do istniejącego pliku CSV

Eksport-CSV CMDLET obsługuje dodawanie treści do istniejących plików CSV. Może pomóc w skompilowaniu danych do jednej bazy danych.

Aby dołączyć, dodaj flagę „-Apend”. Użyj lokalizacji istniejącego pliku CSV jako wartości „-path”.

$ GET-Process | Eksport -CSV -Append -path/home/viktor/Desktop/Processes.CSV

Wybór właściwości do napisania do CSV

Przyjrzyjmy się najpierw na wyjściu Process.

$ GET-Process

Tutaj każda kolumna prezentuje określony rodzaj informacji o aktualnie uruchomionych procesach. Każda z kolumn reprezentuje właściwość powiązanego procesu. Do tej pory pracowaliśmy ze wszystkimi właściwościami procesów (przeniesienie ich do pliku CSV). Jednak nie wszystkie właściwości są niezbędne dla każdej sytuacji.

Możemy dodać filtr pośredni, aby uzyskać tylko kilka właściwości. Aby to zrobić, weźmiemy pomoc w innym cmdlet Select-Obiect.

W następnym przykładzie wyeksportujemy tylko nazwę procesu (nazwa procesu) i id (id).

$ GET-Process | SELECT -OBject -Property ProcessName, identyfikator | Eksport -CSV -Notypeinformation -path/home/viktor/komputer/procesy.CSV
$ Get-content/home/viktor/komputer/procesy.CSV

Brak zastępowania

Jeśli nie zostanie dołączone do istniejącego pliku, Eksport-CSV domyślnie zastąpi istniejący plik. W wielu sytuacjach może to powodować nieuzasadnione usunięcie ważnych dzienników. Aby uniknąć takich wypadków, możemy poinformować Eksport-CSV, aby domyślnie nie zastępować istniejącego pliku.

Aby to zrobić, dodaj flagę „-noclobber”.

$ GET-Process | Eksport -CSV -Noclobber -path/Home/viktor/Desktop/Processes.CSV

Jak widać, teraz rzuca błąd, który wspomina, że ​​plik już istnieje.

Nadpisanie plików tylko do odczytu

Domyślnie plik tylko do odczytu nie pozwala na edycję. Możemy jednak użyć PowerShell do wymuszenia edycji do pliku. Ta funkcja jest upieczona bezpośrednio do eksportu-CSV. Sposób, w jaki jest to zrobione, odstrasza plik jako tylko odczyt, wykonanie edycji, a następnie ponownie oznaczenie go tylko do odczytu.

Aby zastąpić istniejący plik tylko do odczytu, użyj flagi „-Force”.

$ GET-Process | Export -CSV -Append -force -path/home/viktor/komputer/procesy.CSV

Kodowanie pliku

Do kodowania plików Eksport-CSV domyślnie używa UTF-8. To uniwersalne kodowanie dla wszystkich plików tekstowych. Jednak w określonych sytuacjach różne kodowanie ma większy sens. Na szczęście Eksport-CSV obsługuje definiowanie określonego kodowania.

Aby określić określone kodowanie, użyj flagi „-enecoding”.

$ GET-Process | Eksport -CSV -encoding -Ścieżka/home/viktor/komputer/procesy.CSV

Oto lista wszystkich obsługiwanych formatów kodowania.

  • ASCII
  • Unicode
  • UTF7
  • UTF8
  • UTF8BOM
  • UTF8NOBOM
  • UTF32
  • Bigendianunicode

Końcowe przemyślenia

CMDlet Export-CSV w PowerShell jest potężnym narzędziem do eksportowania informacji do formatu CSV. Ten przewodnik pokazuje niektóre sposoby eksportu CSV. Można go również zaimplementować w skryptach PowerShell, aby zautomatyzować transfer danych. Przekształca strukturę danych w prostszy i czytany przez użytkownika format, z którego można korzystać wiele aplikacji.

Szczęśliwy komputer!