PowerShell Pester 101: מדריך מעשי למתחילים

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

Pester, המודול העוצמתי של PowerShell, מסייע לך לכתוב בדיקות אוטומטיות באמצעות שפת דומיין מיוחדת (DSL). במדריך זה, תלמד להסיר את הנחיות הניחושים וליצור תהליך חזק לוודא את הסקריפטים שלך.

התחזק ותן ל-Pester להגביר את ביטחונך בסקריפטינג!

התקנת והגדרת Pester

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

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

תוכל להוריד את המודול Pester מגלריית PowerShell:

Install-Module Pester

אם תתמודד עם אזהרה, יתכן שזה בגלל שללקוחות Windows 10 (ואחריו) קיימת גרסה ישנה יותר של Pester המותקנת כבר כברירת מחדל. לדוגמה, גרסה 3.4.0 מותקנת מראש לעיתים תכופות.

ודא שאתה מסיר את הגרסה הישנה כדי למנוע סכסוכים:

$module = "C:\Program Files\WindowsPowerShell\Modules\Pester\3.4.0"
takeown /F $module /A /R
icacls $module /reset
icacls $module /grant "*S-1-5-32-544:F" /inheritance:d /T
Remove-Item -Path $module -Recurse -Force -Confirm:$false

הסקריפט הזה משכפל את התיקייה של Pester 3.4.0, מעדכן הרשאות, ומסיר אותה.

התקן את הגרסה האחרונה של Pester על ידי הוספת הפרמטר -Force:

Install-Module Pester -Force

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

אמת את הגרסה המותקנת עם הפקודה הבאה:

Get-Module -Name Pester -ListAvailable

יצירת קובץ בדיקות פסטור

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

צור סקריפט של פאוורשל בשם ServerProvisioning.Tests.ps1 בתיקיה הרצויה שלך; נגיד שזה בתיקיית ~\Documents שלך.

לאחר מכן, הרץ את בדיקות פסטור עם הפקודה Invoke-Pester:

cd ~\Documents
Invoke-Pester

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

בוא נוסיף כמה בדיקות באמצעות מבנה הבלוק ההיררכי של פסטור, שבו:

  • describe מייצגת קטגוריה של בדיקות, כגון פונקציונליות מרכזית של סקריפט.
  • context מארגן אופציונלית בדיקות לקטגוריות משנה.
  • it מגדיר בדיקות בודדות.
describe 'IIS' {
    context 'Windows features' {
        it 'installs the Web-Server Windows feature' {

        }
    }
}

describe 'RegistryTweaks' {

}

describe 'SoftwareInstalls' {

}

הוספת והרצת בדיקה

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

נניח שסקריפט אספקת השרת רץ, והמשימה היא לאמת שהתכונה Web-Server מותקנת. אם כן, בצע בדיקה ידנית.

הרץ את הפקודה הבאה כדי לבדוק ידנית אם תכונת Web-Server (IIS) מותקנת על השרת המרוחק.

Invoke-Command -ComputerName SRV1 -ScriptBlock { (Get-WindowsFeature -ComputerName SRV1 -Name Web-Server).Installed }

פקודה זו מחזירה True אם התכונה מותקנת ו-False אחרת.

עכשיו, הוסף את הדברים הבאים לבלוק it כדי לאוטומט את הבדיקה הזו. מפעיל should עם התנאי -BeTrue קובע שהתכונה מותקנת.

describe 'IIS' {
    context 'Windows features' {
        it 'installs the Web-Server Windows feature' {
            Invoke-Command -ComputerName SRV1 -ScriptBlock { (Get-WindowsFeature -ComputerName SRV1 -Name Web-Server).Installed } | should -BeTrue
        }
    }
}

לבסוף, הרץ מחדש את הבדיקה:

cd ~\documents
Invoke-Pester

כפי שציפית, הבדיקה תיכשל אם התכונה לא מותקנת.


ל-VS Code יש גם אינטגרציה מצוינת עם Pester. במקום להריץ Invoke-Pester, אתה יכול ללחוץ על פריט Run Tests על בדיקות בודדות ישירות ב-VS Code. פעולה זו מפעילה בדיקות ספציפיות.


סיכום

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

בנה על בסיס זה על ידי חקירת כיצד Pester יכול להתמודד עם תרחישים מתקדמים יותר, כגון בדיקות APIs, חיקוי פקודות, או הרצת בדיקות לפני ואחרי פריסה.

כשהתמזגת את Pester לתוך זרימת העבודה שלך, תשפר את הסקריפטים שלך ותשיג אמון באמינותם—התרחב בביטחון במאמצי האוטומציה שלך!

Source:
https://adamtheautomator.com/powershell-pester-testing-guide/