יצוא-CSV: המרת עצמים לקבצי CSV באופן יעיל

אם יש לך צורך לשלוח מידע מ-PowerShell לקובץ CSV, הפקודה Export-CSV כאן כדי לעזור. פקודה זו חוסכת המון זמן למנהלים שצריכים לסדר טקסט רץ לתוך מבנה מובנה. במקום להתעסק עם Excel, אנו יכולים להשתמש ב-PowerShell כדי ליצור קבצי CSV.

אפשר ליצור קבצי CSV כדי להזין דוחות, לשלוח לבסיסי נתונים ועוד מכל אובייקט PowerShell עם פקודת Export-Csv.

התבנית של CSV היא פשוט רשימת פריטים מופרדת בפסיקים המאוחסנת כקובץ טקסט. מכיוון שזו פשוט קובץ טקסט, אנו יכולים בעצם להשתמש בפקודה כללית לטקסט כמו Set-Content כדי לבצע את העבודה. אך כדאי להשתמש בפקודה מסוימת כמו Export-Csv שכבר קיימת ומאפשרת שמירה של פלט CSV לקובץ.

קבצי CSV דורשים מבנה ספציפי. היכולת של הפקודה להבין, לקרוא ולהמיר מידע לקבצי CSV היא מה שהופכת את פקודת ה-PowerShell הזו לכלי נפלא.

ניהול ודיווח על Active Directory, Exchange ו-Microsoft 365 עם ManageEngine ADManager Plus. הורד את הגרסה החינמית!

עצמים -eq שורות של CSV

הפקודה Export-Csv כולה עבור מטרה אחת; לשמור אובייקטים של PowerShell לקובץ CSV.

נניח שיש לך אובייקט עם שני מאפיינים בשמות foo ו־bar. כל אחד מהם מכיל ערכים רספקטיביים של 1 ו־2. כאשר אתה שולח את האובייקט הזה ל־Export-Csv, הוא ייצור קובץ CSV עם שני עמודות ושורה אחת. באפשרותך לייבא לתוכנה את תוכן ה־CSV ולבדוק איך הוא נראה.

PS> $testObject = [pscustomobject]@{'foo' = 1; 'bar' = 2}
PS> $testObject | Export-Csv -Path C:\TestObject.csv
PS> $testObject
foo	bar
1 	2
PS> Import-Csv -Path C:\TestObject.csv
foo	bar
1  	2

פוורשל מטפל בעצם באובייקט בזיכרון ובקובץ CSV באותה המידה! גם כיוון של הכותרות של העמודות שלי מנוחס.

PS> Get-Content -Path C:\TestObject.csv

#סוג System.Management.Automation.PSCustomObject
"foo","bar" "1","2"

שים לב שהפקודה משתמשת בסימן גרש כפול סביב כל ערך של שורה. זה מאפשר לך לכלול שדות עם רווחים גם.

פרמטרים שימושיים ב־Export-CSV

ב־Windows PowerShell 5.1, הפקודה Export-CSV מציינת את סוג האובייקט שיצר את קובץ ה־CSV. אם ברצונך שלא תראה את השורה הזו, פרמטר פופולרי הוא NoTypeInformation שמסיר את השורה הזו לחלוטין.

אם אתה עובד עם המון קבצי CSV או מקורות נתונים שונים, ייתכן שתלמד בדרך הקשה ש־Export-CSV יכול לדרוס קבצים קיימים. אין בעיה אם אתה משתמש בפרמטר Append. הפרמטר Append מאפשר לך להוסיף שורות ל־CSV במקום לדרוס קובץ קיים.

פרמטר נוסף שימושי הוא Delimiter. לפעמים, ייתכן שתצטרך ליצור קובץ CSV שאינו משתמש במפריד הרגיל (פסיק) להפרדת השדות. במקום זאת, אולי תצטרך ליצור קובץ עם המון נתונים שמשתמש בטאבים כמפרידים או אף נקודות פסיק. פקודת ה־Export-Csv ב־PowerShell יכולה לעזור לנו גם בכך על ידי הגדרת המפריד שאנו צריכים.

PS> $testObject | Export-Csv -Path C:\TestObject.csv -Delimiter "`t"
PS> Get-Content -Path C:\TestObject.csv

#TYPE System.Management.Automation.PSCustomObject
"foo"   "bar" "1"     "2"

טיפול בגרשיים

כאשר אתה יוצר שורות CSV, Export-Csv מסגיר את כל השדות בגרשיים. במצבים מסוימים, זה יכול לא להיות רצוי. למרבה הצער, אין דרך למנוע זאת. אך, על ידי שימוש בקצת קוד נוסף, אפשר להגשים זאת.

מטה תראה דוגמה ליצירת קובץ ה-CSV. לאחר מכן, Get-Content קורא את קובץ הטקסט הגולמי, מחליף את כל הגרשיים בזיכרון בשום דבר. לאחר מכן, Set-Content כותב את המידע הזה מחדש לדיסק.

$testObject | Export-Csv -Path C:\TestObject.csv
(Get-Content -Path C:\TestObject.csv -Raw).replace('"','') | Set-Content -Path C:\TestObject.csv

ניהול ודיווח של Active Directory, Exchange ו-Microsoft 365 עם ManageEngine ADManager Plus. הורדת גרסה חינמית לניסוי!

סיכום

הפקודה Export-Csv היא כלי פשוט אך יעיל ביותר לניהול נתוני CSV. היא מבינה את מבנה קובץ הנתונים ב-CSV וממירה אובייקטים של PowerShell לשורות CSV.

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!

הפקודה הזו היא עוד סיבה טובה להתחיל לכתוב קוד PowerShell היום!

Source:
https://adamtheautomator.com/export-csv/