לדלג לתוכן

2.1 פאוורשל בסיסי הרצאה

פתיח

  • השפה PowerShell היא ה-shell העדכני של Windows, ונחשב לפופולרי מאוד בקרב מפתחים ומנהלי מערכת. מדובר בשפת סקריפטים מודרנית וכתיבה נוחה (לדעתי).
  • השפה PowerShell היא שילוב של שפת סקריפטים (כמו Python או batch), ותכנות מונחה-עצמים (OOP), ומספק תמיכה לכל הפקודות שאנחנו מכירים מ-Batch, אך עם הרבה יותר עוצמה וגמישות.

תמיכה ב- .NET

  • השפה PowerShell תומכת ב-.NET Framework. של מיקרוסופט.
  • אם אינכם מכירים, .NET Framework. הוא אוסף של ספריות שמספקות כלים לפיתוח תוכנה, פיתוח אתרים, אפליקציות למובייל ועוד. הוא נתמך על ידי שפות תכנות רבות של מיקרוסופט כמו C#, VB.NET ו-F#, וכמובן גם PowerShell.

התממשקות עם PowerShell

  • ישנם מספר דרכים לפתוח את הטרמינל של PowerShell:

  • לחפש "PowerShell" בתפריט ההתחל.

  • לפתוח את ה-CMD ואז להקליד את הפקודה powershell.
  • להשתמש בטרמינל החדש Windows Terminal (WT).
  • לאחר שתבחרו את הדרך בה תרצו להפעיל את PowerShell, תוכלו להריץ את כל הפקודות של Batch שאתם מכירים ב-Shell החדש הזה.

  • השתמשו בפקודה Get-Command כדי לקבל רשימה של כל הפקודות ב-PowerShell. תוכלו לראות שהפקודות מחולקות לכמה סוגים: Function, Cmdlet, ו-Alias. נסביר את הסוגים:

  • פקודת Function: סקריפט PowerShell שמבצע פעולה מסוימת.

  • פקודת Cmdlet: קוד שנכתב ב-.NET (בכפוף לשפת .NET כלשהי) שמטרתו להיות פקודה ב-PowerShell.
  • פקודת Alias: פקודה שמפנה לפקודה אחרת, כמו לדוגמה echo, שהיא alias לפקודה Write-Output.
  • פקודה חיצונית: קובץ הרצה שניתן להפעיל ב-PowerShell (כמו ב-Batch), התומך במשתנה PATH.
  • כמו שניתן לראות, שמות הפקודות ב-PowerShell נכתבים בצורה של: Action-Name. לדוגמה: Set-Alias, Get-Help, Set-Date.

פקודות בסיסיות שצריך להכיר

  • הפקודה Get-Help: מאפשרת לקבל מידע על PowerShell, על קונספטים בסיסיים, כיצד כותבים קוד, וגם מידע על פקודות. לדוגמה, כתבו את הפקודה Get-Help echo כדי ללמוד איך להשתמש בפקודה: Pasted image 20240628221846.png

  • ניתן לראות ש-echo היא alias של הפקודה Write-Output.

  • כל הפקודות ב-PowerShell מחזירות אובייקטים. כדי לקבל מידע על האובייקט המוחזר, השתמשו ב-| Get-Member: Pasted image 20240628222024.png

  • הפקודה echo מחזירה אובייקט מסוג string (מחרוזת), וב-PowerShell אפשר לבצע עליו פעולות רבות. לדוגמה, ניתן להפעיל את הפעולה ToUpper שתהפוך את כל האותיות לגדולות. יש גם שדות נוספים שניתן לגשת אליהם, כמו Length, שמחזיר את אורך המחרוזת: Pasted image 20240628222315.png

  • יצירת משתנים ב-PowerShell:

$myVariable = "Hello, PowerShell!"
Write-Output $myVariable

פקודות בסיסיות ב-PowerShell

  • קבלת רשימת קבצים ותיקיות בתיקייה הנוכחית:
Get-ChildItem
  • יצירת תיקייה חדשה:
New-Item -Path "C:\NewFolder" -ItemType Directory
  • קבלת תוכנות רצות במערכת:
Get-Process
  • עצירת תוכנה לפי שם:
Stop-Process -Name "notepad"

שימוש ב-pipe ב-PowerShell

בשפה PowerShell יש תמיכה ב-pipe (|), שמאפשר להעביר את הפלט של פקודה אחת כקלט לפקודה אחרת.

  • לדוגמה, לקבל את כל התהליכים הרצים, לסנן את אלה ששמם כולל את המילה "notepad", ואז לעצור אותם:
Get-Process | Where-Object {$_.Name -like "notepad"} | Stop-Process
  • הפקודה Where-Object דומה לפקודת find ב-Batch, אבל ב-PowerShell היא מחפשת בתוך אובייקטים ולא מחרוזות. כדי לדעת על איזה שדה לחפש, השתמשו ב-Get-Member:
Get-Process | Get-Member
  • כך, אתם יכולים למצוא את השדה Name, ולחפש את השם של התהליך. לאחר שמצאתם את התהליך, ניתן להעביר אותו לפקודה Stop-Process כדי לעצור אותו.

הסבר זה מציג את היתרונות והחוזקות של PowerShell, במיוחד בניהול תהליכים, עבודה עם אובייקטים, ותמיכה מלאה ב-.NET Framework.