לדלג לתוכן

2.3 פאוורשל מתקדם הרצאה

בהרצאה נלמד כיצד ליצור cmdlet ו - class משלנו בpowershell

שלבים ליצירת Cmdlet ב-PowerShell

  1. יצירת קובץ Module: יצירת קובץ PSM1 שמכיל את הפונקציונליות של ה-Cmdlet.
  2. הגדרת פונקציה עם קישוטים (Attributes): הגדרת הפונקציה עם פרמטרים וקישוטים שמאפשרים להעביר נתונים לפונקציה.
  3. ייבוא המודול לפאוורשל: ייבוא המודול והפעלת הפקודה החדשה.

דוגמה ליצירת Cmdlet ב-PowerShell

יצירת קובץ Module

ניצור קובץ בשם MyCustomCmdlets.psm1:

# MyCustomCmdlets.psm1

function Get-Greeting {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true, Position=0)]
        [string]$Name
    )

    process {
        Write-Output "Hello, $Name!"
    }
}

הסבר הקוד:

  • [CmdletBinding()]: קישוט שמצהיר על הפונקציה כ-Cmdlet.
  • param: בלוק שמגדיר את הפרמטרים שהפונקציה תקבל.
  • [Parameter(Mandatory=$true, Position=0)]: קישוט שמגדיר את הפרמטר כפרמטר חובה ומציב אותו במקום הראשון.
  • [string]$Name: הגדרת סוג הנתונים של הפרמטר.
  • process { ... }: בלוק שמגדיר את מה שהפונקציה תעשה בכל פעם שהיא מופעלת.

ייבוא המודול והפעלת הפקודה

כדי להשתמש ב-Cmdlet החדש, נייבא את המודול ולאחר מכן נפעיל את הפקודה החדשה:

# ייבוא המודול
Import-Module -Name "C:\path\to\MyCustomCmdlets.psm1"

# הפעלת ה-Cmdlet
Get-Greeting -Name "John"

הסבר הפקודות:

  • Import-Module -Name "C:\path\to\MyCustomCmdlets.psm1": מייבא את המודול המכיל את ה-Cmdlet החדש.
  • Get-Greeting -Name "John": מפעיל את ה-Cmdlet עם הפרמטר שהעברנו ומציג את ההודעה "Hello, John!".

כתיבת Class ב-PowerShell

החל מ-PowerShell 5.0, ניתן לכתוב מחלקות ישירות בקוד PowerShell.

דוגמה ליצירת מחלקה ב-PowerShell:

class Person {
    [string]$Name
    [int]$Age

    Person([string]$name, [int]$age) {
        $this.Name = $name
        $this.Age = $age
    }

    [void]Greet() {
        Write-Output "Hello, my name is $($this.Name) and I am $($this.Age) years old."
    }
}

# יצירת אובייקט חדש מהמחלקה Person
$person = [Person]::new("John", 30)
$person.Greet()

הסבר הקוד:

  • class Person: הגדרת מחלקה חדשה בשם Person.
  • [string]$Name, [int]$Age: הגדרת משתנים של המחלקה עם סוג הנתונים שלהם.
  • Person([string]$name, [int]$age): קונסטרוקטור של המחלקה המאפשר יצירת אובייקט חדש עם פרמטרים.
  • [void]Greet(): פונקציה בתוך המחלקה שמבצעת פעולה מסוימת (במקרה זה, הצגת ברכה).