כאשר אתה מריץ סקריפט, איך תוכל להיות בטוח שהוא עשה בדיוק את מה שתכננת? אולי הוא הסיר קובץ או עצר שירות. אבל האם עשה זאת באופן ללא תקלות בכל סביבה, סשן משתמש או מכונה שנגע בה? אם הסקריפט שלך משפיע על דוזיניים – בדיקה עם 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/