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.
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!