הפקודות הבסיסיות של PowerShell שעליך לדעת

האם ניסית לכתוב קוד PowerShell ונתקעת בו מתייבש? אל תדאג עוד! אחת מהדרכים הטובות ביותר להיות מיומן ב־PowerShell היא על ידי הבנת היסודות. לדעת מספר פקודות בסיסיות של PowerShell עשויות להפוך אותך למומחה, ותוכל לאוטומטיית משימות מנהלות יותר ביעילות.

במדריך זה, תלמד את ה־cmdlets הבסיסיים של PowerShell שעליך לדעת כדי להפוך את חוויית ה־PowerShell שלך למעניינת יותר.

דרישות מוקדמות

המדריך הזה יהיה הדגמה מעשית, אך אין לו הרבה דרישות מוקדמות. אם ברצונך להמשיך וללמוד, כל מערכת (Windows או Linux) עם PowerShell 5.1 או גרסה מעליה יעבוד. אם כי הפקודות מוצגות באמצעות Windows PowerShell, הדוגמאות למטה עובדות ב־PowerShell 7+ שפות-קרוס.

לקבלת מידע עזרה על פקודות עם Get-Help

האם כתבת קוד כמו בוס בלי לקבל עזרה מקודמת? טוב, תמיד תהיה צורך בעזרה בעת כתיבת קוד. בין אם אתה מפעיל קוד או פקודות בסביבת שורת הפקודה, ה־cmdlet Get-Help מגיע לידי עזרה. Get-Help יש בו יד.

בואו נתחיל את המדריך הזה על ידי למידה על איך ה־cmdlet Get-Help עובד.

הפקודה Get-Help מספקת לך את המדריכים הנחוצים לשימוש בכל פקודה באופן יעיל מבלי לקבל שגיאות. ראה אותה כמסמך תיעוד עבור כל אחת מפקודות הפוורשל.

פתח פוורשל בתור מנהל מערכת, והרץ את הפקודה Get-Help למטה כדי להציג מידע מפורט (-Detailed) אודות פקודה, כמו פקודת ה-Get-ExecutionPolicy.

Get-Help -Name Get-ExecutionPolicy -Detailed
Getting Detailed Information of Commands

במקום מידע מפורט בלבד, אולי ברצונך להציג את כל המידע אודות פקודה. אם כן, הוסף את הפרמטר -Full בפקודת Get-Help.

הרץ את הקוד למטה כדי לקבל את כל המידע המלא (-Full) אודות הפקודה Get-Help עצמה.

Get-Help Get-Help -Full
Getting Full Information of Commands

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

הרץ את הפקודה Get-Help למטה כדי לקבל דוגמאות (-Examples) לאופן בו ניתן להשתמש בפקודת Get-Process.

 Get-Help Get-Process -Examples
Applying -Examples to get help for Get-Process

שליפת תהליכי מחשב עם Get-Process

אתה זוכר את מanager משימות ב- Windows שמציג את כל התהליכים, השירותים, היישומים וכל זה? טוב! ה-cmdlet של Get-Process הוא cmdlet בסיסי אך חיוני שנותן לך גישה לכל התהליכים במחשב שלך בכמה צעדים מבלי לפתוח את מנהל המשימות.

הרץ את הפקודה הבאה כדי לקבל רשימה של כל תהליכי המערכת בפורמט טבלה.

Get-Process
Getting All Windows Processes

כאשר תהליך מקפא וגורם למחשב שלך לעבוד איטית, עצור את התהליך על ידי שימוש ב-piping מ-cmdlet Get-Process ל-cmdlet Stop-Process. לדוגמה: הרץ Get-Process -Id 1252 | Stop-Process, כאשר -Id 1252 מציין את מזהה התהליך של התהליך שברצונך לעצור.

משיכת היסטוריית סשן של PowerShell עם Get-History

יתכן ויהיה צורך לבדוק את הפקודות האחרונות שלך, כגון לוודא אם הפקודה שביצעת לאחרונה היא נכונה או אם בכלל ביצעת פקודה. אך האם PowerShell תומך בהיסטוריה של פקודות? כן! פקודת Get-History מחזירה אובייקט של כל הפקודות האחרונות שלך בסשן הנוכחי של PowerShell שלך.

הפעל את הפקודה למטה כדי לקבל רשימה של כל הפקודות שביצעת לאחרונה בסשן הנוכחי שלך.

Get-History
Getting the commands history of the current session

אם תעדיף לראות פקודות ספציפיות מההיסטוריה, הוסף את הפרמטר -Id ואז את מספר הזיהוי של הפקודה מההיסטוריה. לדוגמא, הפעל Get-History -Id 2 כדי לראות את הפקודה השנייה בהיסטוריה.

הצגת שירותי המערכת עם Get-Service

כמו פקודת Get-Process, PowerShell מאפשרת גם לך לראות את כל השירותים הרצים במערכת שלך. פקודת Get-Service מאפשרת לך לראות את כל השירותים, שיכולים להיות שרתי מסד נתונים או יישום שבאופן אוטומטי שולט בבהירות של מסך המחשב שלך.

הפעל את הפקודה למטה כדי לקבל רשימה של כל השירותים במערכת שלך בפורמט טבלה. עם הפקודה הזו, תוכל לראות גם שירותים שנעצרו.

Get-Service
Getting all available services on the local computer

אולי אתה מחפש שירותים שמתחילים בתו מסוים. אם כן, הוספת תו כללי (*) יעשה את העבודה.

הרץ את הפקודה Get-Service למטה, עבור על האות הראשונה והאסטריסק (A*) של השירותים שאתה רוצה לראות. הוספת התו הכללי מאפשר לך לסנן את כל השירותים שאינם מתחילים באות 'A'.

Get-Service A*
Getting all services that start with the letter ‘A’

הרץ עבור רקע עם Start-Job

כתיבת קודים יכולה להיות מעצבנת אם יש עוד הרבה לכתוב, אך פקודה יחידה לוקחת לנצח לכתוב. אין בעיה! PowerShell מספק cmdlet להפעלת עבודות רקע בהפעלה שלך. ה-cmdlet Start-Job מספק סביבת PowerShell להפעלת קוד או פקודות כעבודה רקע ללא אינטראקציה ממשתמש.

הרץ את הפקודה Start-Job למטה כדי להתחיל עבודה רקע עבור ה-cmdlet Get-Command. הפעלת עבודה רקע מפעילה את ה-cmdlet Get-Command בלעדי לתצוגה של הפלט בשורת הפקודה שלך.

Start-Job -ScriptBlock {Get-Command}
Starting a background job for Get-Command

מאחר שאתה עסוק בעבודות רקע, איך ניתן לבדוק אם עבודה עדיין רצה או הושלמה? הרץ את ה-cmdlet Get-Job כדי לקבל את כל העבודות בהפעלה שלך.

שינוי ספריות עבודה עם Set-Location

ישנם רגעים בהם עליך לשנות ספריות, כגון בעת הרצת סקריפט או תוכנית ממיקום מסוים. אבל איך משנים ספריות? השתמש בפקודת ה-Set-Location כדי לעזור לך בכך. הפקודה Set-Location מגדירה את ספריית העבודה הנוכחית לספרייה שאתה מציין בפקודה.

הרץ את הקוד למטה כדי להגדיר את ספריית העבודה הנוכחית ל-C:\Users\hp\Desktop. החלף את hp בשם המשתמש של המחשב שלך.

Set-Location C:\Users\hp\Desktop

למטה, תוכל לראות במודע ש-C:\Users\hp\Desktop כעת היא ספריית העבודה.

Changing Working Directory

אימות אם נתיבים קיימים על ידי Test-Path

PowerShell עשוי להציג באג אם אתה מנסה לגשת לקובץ שלא קיים. כיצד למנוע את זה? פקודת ה-Test-Path מאפשרת לך לבדוק אם נתיב קיים או לא, בסינטקס אינטואיטיבי שלה.

כעת, צור תיקייה על השולחן, תתן לה את השם NewFolder.

הרץ את הפקודה Test-Path למטה, ואז הכנס את הנתיב שברצונך לבדוק. לדוגמה, הפקודה בדוגמה זו בודקת אם הנתיב C:\Users\hp\Desktop\NewFolder קיים.

Test-Path C:\Users\hp\Desktop\NewFolder

למטה, ניתן לראות שהפקודה החזרה ערך True מאחר והנתיב קיים. במקרה אחר, תקבל פלט של False.

Testing if the path exists

המרת אובייקט PowerShell ל-HTML עם ConvertTo-HTML

אם אתה מעדיף טפס מאורגן עבור הנתונים שלך, המר את הנתונים שלך ל-HTML עם הפקודה ConvertTo-Html. בעיקר, הפקודה מקבלת את קובץ הפלט שברצונך להמיר ואת שם הקובץ שברצונך לשמור אותו עליו.

הריץ את הפקודה למטה כדי לאסוף את רשימת כל פקודות ה-PowerShell (Get-Command) בזיכרון ולהמיר (ConvertTo-Html) את הרשימה לקובץ HTML בשם Command.html.

קובץ ה-HTML נשמר בשולחן העבודה שלך מאחר ושינית את תיקיית העבודה לפני כן. כדי לשמור את קובץ ה-HTML במיקום אחר במקום זה, ציין את הנתיב המלא. לדוגמה: Get-Command | ConvertTo-HTML > C:\Temp\Commands.html

# יוצר קובץ Commands.html שמכיל את כל פקודות ה-PowerShell
Get-Command | ConvertTo-Html > Commands.html

יצוא אובייקטים של PowerShell ל-CSV עם Export-CSV

אם אתה חושב שדיווח ב־CSV היה יותר טוב במקום HTML, אז השתמש ב־Export-CSV cmdlet. דומה ל־ConvertTo-Html cmdlet, ה־Export-CSV cmdlet מאפשר לך לייצא נתונים לקובץ CSV.

הריץ את הפקודה להצגת רשימת פקודות PowerShell (Get-Command), וייצא את הרשימה כקובץ CSV (Export-CSV) בשם Commands.csv.

Get-Command | Export-CSV Commands.csv

כמו ב־ConvertTo-Html cmdlet, אפשר גם לציין נתיב ייצוא עבור קובץ ה־CSV כך: Get-Command | Export-CSV C:\Temp\Commands.csv

פתח את קובץ ה־Commands.csv, ותראה משהו דומה למה שבתמונה למטה. לא רע, נכון?

Opening Exported Commands.csv in Microsoft Excel

צפייה בכל פקודות PowerShell הזמינות עם Get-Command

הפקודה האחרונה ברשימת הפקודות של PowerShell היא ה־Get-Command cmdlet. ה־Get-Command cmdlet בסך הכול מפרט את כל פקודות ה־PowerShell הזמינות שאפשר להריץ בפורמט של טבלה. אבל כפי שראית בדוגמאות הקודמות, אתה יודע שזה לא רק מה ש־Get-Command יכול לעשות.

אולי תרצה לרשום את ה-cmdlets או את הסימונים באופן ברירת מחדל. אם כן, הוסף את הפרמטר -CommandType ל-cmdlet Get-Command כדי לסנן את הפלט לפי סוג הפקודה שאתה מגדיר. ערך הפרמטר -CommandType יכול להיות Alias, Cmdlet, או Function.

הפעל את הפקודה Get-Command למטה כדי לרשום רק cmdlets (-CommandType Cmdlet) עם שמות שמתחילים באות 'G' (-Name G*).

Get-Command -Name G* -CommandType Cmdlet
Getting all cmdlets that start with the letter ‘G’

דרך נוספת לסנן את הפלט של Get-Command היא על ידי הפקתו ל-cmdlet Select-Object. כפי שאתה יודע, האובייקט שמוחזר על ידי ה-cmdlet Get-Command הוא בתבנית טבלה. בטבלה זו, שמות העמודות מייצגים את התכונות שניתן לבחור מהאובייקט.

הרץ את הפקודה Get-Command למטה כדי לאסוף רשימה של כל הפקודות של PowerShell ולסנן את התצוגה כך שתציג את תכונת ההגדרה של כל פקודה (Select-Object -Property Definition).

Get-Command | Select-Object -Property Definition
Property Definition

מסקנה

מדריך זה סיפק לך מדריך מקיף על איך להריץ פקודות בסיסיות של PowerShell. כעת, אתה צריך לדעת כיצד להשתמש בצינורות ולהריץ פקודות ולהימנע מלהיתקע בקוד בכל עת.

כעת, איך היית ממשיך מהידע החדש שלך? אולי ללמוד כיצד לכתוב פקודות ב-PowerShell בקובץ תסריטים מרובות שורות בלי לערבב דברים?

Source:
https://adamtheautomator.com/basic-powershell-commands/