ייבוא CSV: קריאת קבצי CSV באמצעות PowerShell
באפשרותך להשתמש ב- cmdlet Import-CSV PowerShell כדי לקרוא את התוכן של קובץ CSV. לאחר טעינת התוכן של קובץ ה- CSV, תקבל אובייקט PowerShell שבו כל עמודה מקובץ ה- CSV היא מאפיין נפרד. מאמר זה דן בפרטים הספציפיים של קריאת נתונים מקבצי CSV באמצעות ה- cmdlet Import-CSV.
קבצי CSV משמשים לאחסון נתונים טבלאיים. לדוגמה, יצרנו גיליון אלקטרוני פשוט של Excel המכיל פרטי משתמש AD עם המבנה הבא:
ADlogin,
Email,
Phone,
Department
. שים לב שהשורה הראשונה של הגיליון האלקטרוני מכילה את שמות העמודות. ב- PowerShell, תכונות אלה יהיו זמינות כתכונות אובייקט במערך.
המשימה שלנו היא לייבא קובץ CSV זה לתוך PowerShell ולבצע שינויים ב- Active Directory עבור כל משתמש מהקובץ.
במאמר הקודם, הסברנו כיצד להשתמש ב- cmdlet Export-CSV כדי לשמור אובייקטי PowerShell בקובץ CSV.
שמור קובץ Excel זה כקובץ CSV עם ערכים מופרדים באמצעות פסיקים. קובץ הטקסט המתקבל אמור להיראות כך:
כעת, כדי לייבא קובץ CSV לתוך PowerShell, כל שעליך לעשות הוא לציין את שמו (נתיב):
$ADUsers=Import-CSV -path C:\PS\my_ad_users.csvה- cmdlet Import-CSV ממיר נתונים מקובץ CSV למערך PowerShell.
אם קובץ ה- CSV משתמש במפרידים שאינם פסיקים, ניתן לציין אותם באמצעות הפרמטר -Delimiter. לדוגמה, כדי לייבא קובץ CSV עם מפריד נקודה-פסיק (
;) השתמש בפקודה:
$ADUsers=Import-CSV -path C:\PS\my_ad_users.csv -Delimiter ";"
אם אתה משתמש בתו טאב כמפריד ב- CSV, באפשרותך לציין אותו באופן הבא:
-Delimiter `tאם ברצונך להשתמש בברירת מחדל של מפריד במערכת שלך (בהתאם לשפה ולהגדרות האזוריות של Windows), השתמש בלחצן
-UseCultureדגל.
הפעל פקודה זו כדי לקבל את מפריד ברירת המחדל של המערכת ב- Windows:
(Get-Culture).TextInfo.ListSeparatorכעת אם תתקשר למשתנה $ADUsers, הוא יציג את התוכן של קובץ ה- CSV שלך. ה- cmdlet ממיר את תוכן הקובץ למערך. כל הערכים מקובץ ה- CSV מיוצגים כשורות.
אם קובץ ה- CSV שלך מכיל קידוד תווים מסוג UTF-8, הקפד לציין גם את סוג UTF8 כדי למנוע שגיאות קידוד:
Import-CSV -path C:\PS\my_ad_users.csv -Encoding UTF8ניתן להציג את רשימת מאפייני האובייקט הזמינים באופן הבא:
$ADUsers|get-memberניתן לראות ששורות המערך מכילות PSCustomObjects, שאלמנטים שלהם ניתנים לגישה לפי שמות עמודות מקובץ ה- CSV שלך.
באפשרותך להציג את כל הערכים מעמודה מסוימת:
$ADusers.email
או תכונות האובייקט שצוינו:
$ADusers| Select-Object Email, Phoneאפשרות שימושית נוספת היא לגשת ישירות לאובייקט מסוים במערך. לדוגמה, הפעל את הפקודה הבאה כדי לקבל את הערך של שורה 4 (המספור מתחיל ב- 0):
$ADusers[3]אם ברצונך לשנות את התכונות של משתמשי Active Directory שציינת בקובץ ה- CSV שלך, פשוט השתמש בלולאה ForEach כדי לחזור על כל השורות במערך $ADUsers (נשתמש ב- cmdlet Set-ADUser ממודול AD PowerShell כדי לבצע את השינויים).
חזרה על כל השורות במערך בזו אחר זו. בדוגמה זו, המשפט $_. פירושו שאנו ניגשים לשורה הנוכחית של המערך באפשרותך לקבל את הערך של עמודה מסוימת מהשורה הנוכחית על-ידי גישה אליה באמצעות שם העמודה. לדוגמה, כדי להציג את הערך ADLogin מהשורה הנוכחית, עיין בשורה השניה. ובשורה השלישית אנו מחפשים משתמש ב- AD לפי הערך של עמודת ADLogin ומשנים את ערכי התכונות שלו:
$ADUsers | ForEach-Object {
Write-host $_.ADLogin
Set-ADUser -Identity $_.AdLogin -MobilePhone $_.Phone -Department $_.Department -EmailAddress $_.Email
}באפשרותך להחליף קובץ script זה ב- PowerShell קומפקטי יותר בשורה אחת:
Import-Csv C:\PS\my_ad_users.csv | foreach {Set-ADUser -Identity $_.AdLogin -MobilePhone $_.Phone -Department $_.Department -EmailAddress $_.Email}לפעמים אתה עשוי למצוא את הפורמט להלן נוח יותר. כאן אנו ניגשים לשורה הנוכחית של המערך דרך
$Userמשתנה שהגדרנו במשפט ForMuch:
ForEach ($User in $ADUsers){
$samaccountname = $User.ADlogin
$email = $user.Email
Write-host $samaccountname
Write-host $email
}
במקרים מסוימים, בעת עיבוד רכיבי מערך מקובץ CSV, ייתכן שיהיה עליך להוסיף עמודה נוספת למערך. לדוגמה, אם ברצונך להוסיף את התאריך הנוכחי לאובייקט $ADUsers:
$ADUsers | add-member -membertype NoteProperty -name Date -value (Get-Date -Format dd/MM/yyyy)להלן תרחישים נוספים שבהם באפשרותך להשתמש ב- cmdlet Import-CSV כדי לבצע פעולות ניהוליות במספר רב של אובייקטים:
יצא את תיבות הדואר של Exchange לקבצי PST:
Import-CSV "C:\ps\user_to_export_pst.csv" | ForEach {New-MailboxExportRequest -Mailbox $_.username -FilePath $_.UNCPathtoPstהוסף משתמשים לקבוצת אבטחה של AD באמצעות PowerShell:
Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}או מקרה דומה של הוספת משתמשים לקבוצת Azure AD:
Import-CSV "C:\PS\add_m365_members.csv" | ForEach-Object { Add-UnifiedGroupLinks -Identity it_dept -LinkType Members -Links $_.member }קבל מידע על המשתמש מ-AD:
Import-Csv c:\ps\usernsme_list.csv | ForEach { Get-ADUser -identity $_.user -Properties Name, telephoneNumber | Select Name, telephoneNumber | Export-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8 }לחלופין, השתמש ב- Set-ADUser כדי לשנות את התכונות של משתמשים ספציפיים:
Import-Csv "C:\ps\modifyad_users.csv" | foreach {Set-ADUser -Identity $_.SamAccountName -Title $_.Title -MobilePhone $_.MobilePhone}עדכן תמונות משתמשים ב- Active Directory:
Import-Csv C:\PS\import.csv |%{Set-ADUser -Identity $_.AD_username -Replace @{thumbnailPhoto=([byte[]](Get-Content $_.Photo -Encoding byte))}}צור משתמשים בצובר ב- Active Directory מרשימה בקובץ CSV.





