אמור להיפרד מפלט סקריפט משעמם וצפוי! עם פקודת ה-Write-Output
ב-PowerShell, תוכל להוסיף רגע של יצירתיות ואישיות לסקריפטים שלך ב-PowerShell.
פקודת ה-Write-Output
היא כלי חזק ושותף מושלם לצרכי האוטומציה וניהול המערכת שלך. ובמדריך זה, תלמד למקסם את הפוטנציאל של פקודת ה-Write-Output
.
מוכן? קרא הלאה וגלה את קסם פקודת ה-Write-Output
!
דרישות מקדימות
מדריך זה יהיה הדגמה מעשית. כדי לעקוב, וודא שיש לך מחשב עם PowerShell מותקן (מומלץ לגרסה האחרונה). המדריך משתמש ב-Windows 10 עם PowerShell 7 מותקן.
פלט עצמים לקונסולה
פקודת ה-Write-Output
ב-PowerShell כותבת אובייקטים לנתוני הפלט ומציגה את תוצאות הפקודה או ההודעה בקונסולה. אך תישם כמה מדהימה ומועילה הכלי הזה מפרסם את הפלט באופן יותר משמעותי וערכי.
במקום להציג את הפלט בקונסולה, השתמש ב־Write-Output
cmdlet כדי להתאים אישית את הפלט. פקודת Write-Output
יכולה להוציא כל אובייקט או סוג נתונים, כגון מחרוזות, מספרים שלמים, מערכים ואף אובייקטים מורכבים.
הרץ את הפקודה הבאה כדי להוציא הודעת Hello, World! לקונסולה.
מטה, ניתן לראות את הפונקציה הבסיסית ביותר של ה־Write-Output
cmdlet. אך קרא הלאה כדי ללמוד עוד על שימוש בינוני ומתקדם של פקודה זו.<>

העברת אובייקטים לפקודה אחרת
בנוסף להצגת הפלט בקונסולה, ניתן להשתמש בפקודת Write-Output
כדי לשלוח את האובייקט לפקודה אחרת לעיבוד נוסף. איך? על ידי שימוש באופרטור הצינור (|
). Pipelining הופך את Write-Output
לפקודה מועילה וגמישה למשימות אוטומציה וניהול מערכת.
נניח שברצונך לראות איזה תהליך משתמש ביותר מהמשאבים שלך, כמו המעבד.
הרץ את הפקודות למטה כדי לבצע את הבא:
- משיג רשימה של כל התהליכים (
Get-Process
) הרצים במערכת שלך. - הוצא את הרשימה לצינור, שאז מועברת לפקודת
Sort-Object
. מפעיל הפילטר מאפשר לך לקשר מספר פקודות יחד ולעבד את הפלט של פקודה אחת כקלט לפקודה אחרת. - מיין את רשימת התהליכים (
Sort-Object
) לפי שימוש ה-CPU שלהם בסדר יורד.
שים לב שאתה יכול לשים כל אחת מהפקודות במדריך זה בתסריט של PowerShell ולהריץ אותו.
הרשימה הממוינת מוצגת במסוף, כפי שמוצג למטה.

הוצאת עצמים עם פורמט מותאם
ראית את הפורמט הבסיסי של פקודת Write-Output, שעובד טוב. אם תרצה, תוכל גם להוציא עצמים בפורמט מותאם אישית כדי להוסיף מגע אישי. פורמט מותאם יכול להיות שימושי כאשר ברצונך להציג מאפייני עצם מסוים או להתאים את מראה הפלט.
כדי להוציא עצם עם פורמט מותאם, פקודת Format-Custom
יחד עם פקודת Write-Output
יעשו את העבודה, כך:
כדי ליצור את פורמט הפלט המותאם, ולאחר מכן להעביר את פלט פקודת Format-Custom ל-Write-Output.<>
הרץ את הפקודה הבאה, שאינה מייצרת פלט, אלא יוצרת אובייקט (טבלה ראשית) המכילה שלוש מאפיינים עם הערכים המתאימים להוצאה.
כעת, הריצו את הפקודה הבאה כדי לבצע את הפעולות הבאות:
- צרו פורמט מותאם אישית (
Format-Table
) עבור הפלט (Write-Output
) של הטבלה האשראייתית שלכם ($object
). המאפייניםProperty1
,Property2
ו־Property3
מוגדרים כעמודות. - כווננו את רוחבי העמודות (
-AutoSize
) כך שיתאימו לתוכן.

בנוסף, ניתן להשתמש בפקודת ה- Format-List
עם Write-Output
כדי להוציא את האובייקט כרשימת זוגות ערכים של מאפיינים.

עברת עצם אוסף כייחודי
כברירת מחדל, Write-Output
שולח את כל אלמנט האוסף דרך הצינור בנפרד, תהליך הנקרא ספירה. אך ניתן למנוע מהתנהגות זו על ידי הוספת הפרמטר -NoEnumerate
, ולהעביר את כל אובייקט האוסף כייחודי.
כדי לראות איך הפרמטר -NoEnumerate
פועל, עקבו אחרי השלבים הבאים:
הריצו את הפקודות הבאות כדי לבצע את הפעולות הבאות:
- הגדירו מערך של
$numbers
מאחד עד שלוש (1,2,3
).
- ספור את מספר האובייקטים (
Measure-Object
) שעברו דרך הצינור. - Write-Output $numbers | Measure-Object
בלעדיו משתמש הפקודה NoEnumerate
, Measure-Object
מחזיר ספירה של שלוש (3), מכיוון שכל איבר במערך $numbers
נספר ונשלח בנפרד דרך הצינור.

כעת, הריץ את הפקודות הבאות כדי להציג את מספר האובייקטים שעברו דרך הצינור.
אך מכיוון שהוספת את הפרמטר -NoEnumerate
, פקודת Measure-Object
טוטלת על האובייקט כייחיד, ומחזירה ספירה של אחד (1).

הכלאת הפקודה
Write-Output
בסוגריים (כלומר,(Write-Output 1,2,3)
) תכריע על תהליך המספור לפי תחום הפרמטר-NoEnumerate
.
יצירת מערכת תפריט ותחנות קלט
שימוש נהדר נוסף של פקודת Write-Output
הוא יצירת מערכת תפריט בעזרת סקריפט PowerShell שמבקש מהמשתמש קלט.
צור קובץ .ps1 עם עורך טקסט/קוד לפי בחירתך, מלא את הקוד למטה ושמור את הקובץ. תוכל לתת לקובץ שם לפי בחירתך, אך במדריך זה נקרא לקובץ myoutput.ps1.
הקוד למטה משתמש בלולאה כדי לבקש באופן רציף מהמשתמש לבחור אפשרות מתוך רשימת אפשרויות עד שהמשתמש בוחר באפשרות יציאה
.
עכשיו, הרץ את התסריט (myoutput.ps1
) מתיקיית העבודה.
כפי שמוצג למטה, הודעת ההודעה המשוייכת לבחירה שלך מוצגת כאשר אתה בוחר באפשרויות 1, 2, או 3. אך כאשר אתה בוחר באפשרות 4, התסריט מסיים.

Displaying a Splash Screen or Welcome Message
בנוסף לריכוז אפשרויות שהמשתמשים יכולים לבחור מתוך Write-Output
, תוכלו גם להציג מסך רקע או הודעת ברכה. מסכי רקע מפוארים מותירים רושם טוב (מקצועי ומלוטש) על הסקריפט שלך.
החליפו את הקוד בקובץ myoutput.ps1 באחד הבא, שמציג מסך רקע (באנר של הודעת ברכה) כאשר אתה מפעיל את הסקריפט שלך.
ניתן להתאים אישית את מסך הרקע על ידי שינוי הטקסט והעיצוב של הבאנר. ניתן להוסיף אלמנטים נוספים, כגון לוגו או טקסט, למסך הרקע כפי שרצוי.
עכשיו, הריצו את הסקריפט וראו איך נראה מסך הרקע שלכם.

הצגת סרגל ההתקדמות
בעת הרצת סקריפטים, אינדיקטור של התקדמות מקל על חרדת המשתמש בנוגע לכך האם הסקריפט רץ או לא. סרגלי התקדמות יכולים להיות שימושיים לציון התקדמות של סקריפט או פעולה ארוכה למשתמש. למרבה המזל, עם פקודת ה־Write-Output
, תוכלו ליצור סרגל התקדמות בכל רצונכם.
פתחו את קובץ myoutput.ps1 שלכם, והוסיפו את הקוד שלמטה לתחתית הקוד הקיים בקובץ הסקריפט.
הקוד שלמטה משתמש בלולאת while
לעבור דרך מספר צעדים. בדוגמה זו, 100 צעדים. כל איטרציה של הלולאה מחשבת את האחוז של הצעדים שהושלמו ומציגה סרגל התקדמות באמצעות Write-Output
.
הסרגל התקדמות נוצר באמצעות שילוב של האופרטורים הבאים:
*
– משכפל מחרוזת מסוימת מספר פעמים$()
– מאפשר לפלט של ביטוי להיות כלול בתוך מחרוזת.
הסקריפט משהה אז (Start-Sleep
) למשך 1
שניות כדי לדמות התקדמות לפני המעבר לשלב הבא.
עכשיו, הפעל את הסקריפט וראה כיצד הסרגל מתקדם.
למטה, ניתן לראות את מסך הפתיחה ביחד עם סרגל ההתקדמות.

מסקנה
במדריך זה, ראית כיצד Write-Output
יכול בקלות לפלט אובייקטים, סוגי נתונים, ופורמטים מותאמים. בנוסף, נגעת בשימוש באופרטור הצינור לשליחת פלט אל פקודות אחרות לעיבוד נוסף.
בין אם אתה כותב הודעת פלט פשוטה או משימות אוטומציה מורכבות, Write-Output
הוא כלי בלתי נמנע ליצירת סקריפטים בפוורשל מידעיים ומקצועיים יותר.
עם הידע החדש שזכית, למה לא לכתוב את הפלטים שלך לסוגי קבצים שונים, כמו קבצי .txt ו-.xml? ללא קשר למטרה, העתקות של פלט משמשות לנו בפתרון בעיות עם המערכת או יישומים. פקודת ה-Write-Output
וה-Out-File
מעניקות לך כוח שלא הכרת שצריך לך.
Source:
https://adamtheautomator.com/powershell-write-output/