איך לייבא מודולים של PowerShell כמו בוס

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

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

המשך לקרוא כדי להמריץ את מיומנויות הפוורשל שלך ולהעלות את המשחק הסקריפט שלך לרמות חדשות!

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

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

ייבוא מודול יחיד

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

אך איך ניתן לייבא מודולים ב-PowerShell? ה־Import-Module cmdlet הוא הדרך העיקרית לייבא מודולים ב-PowerShell. לייבוא מודול יחיד הוא אחת מהשימושים הבסיסיים ביותר של פקודת ה־Import-Module, שהיא הדבר הראשון שתלמד במדריך זה.

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

Import-Module PSDiagnostics

ייבוא מודולים ממאגרי ריפוזיטוריות מקוונות באמצעות ה־Install-Module cmdlet מומלץ בחום כל עוד זה אפשרי. פקודת זו מטפלת בתלותים ובניהול גרסאות עבורך.

לאחר שייבאת את המודול, תוכל להשתמש באחד מפקודות cmdlets או פונקציות המצויות במודול כדי לעזור לך לאבחן ולתקן בעיות. פקודת ה-cmdlet Enable-PSTrace היא דוגמה אחת לפקודות הזמינות במודול PSDiagnostics, המאפשרת מעקב תקלות ב-PowerShell.

כעת, הרץ את הפקודה הבאה Enable-PSTrace כדי לבצע מעקב תקלות ולשמור את התוצאות בנתיב המצויין -TraceFilePath (C:\\MyTrace.log). הפקודה זו אינה מספקת פלט לקונסול מאחר והתוצאות מתווספות לקובץ.

Enable-PSTrace -TraceLevel 1 -TraceFilePath C:\MyTrace.log

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

ייבוא מודולים מרובים בו זמנית

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

ייבוא מודולים מרובים הוא דרך מצוינת לחסוך זמן ומאמץ ב-PowerShell. אך איך בדיוק? תציין את שמות המודולים מופרדים בפסיקים.

הרץ את הפקודה הבאה כדי לחפש מספר מודולים (Dism, PowerShellGet, PSReadline) וטען אותם לזיכרון. כמו שייבוא של מודול יחיד, פקודה זו אינה מספקת פלט.

Import-Module Dism, PowerShellGet, PSReadline

הצגת פרטי היבוא של מודול

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

הפרמטר -Verbose הוא אפשרות שימושית שניתן להשתמש בה עם מספר רב של פקודות ופונקציות של פוורשל, כולל פקודת ה־Import-Module. הפרמטר הזה אומר לפוורשל להציג מידע מפורט על הפקודה בזמן ביצועה. בתמורה, אתה מקבל משוב שימושי שאתה יכול להשתמש בו לתיקון בעיות ולאיתור באגים.

הפעילו את הפקודה הבאה כדי לייבא את המודול SmbShare, תוסיפו את הפרמטר -Verbose כדי להדפיס פרטי יבוא המודול.

Import-Module SmbShare -Verbose

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

במקרה זה, המודול SmbShare מספק קומדלטים לניהול שיתופי SMB במכונות Windows. קומדלטים אלו כוללים, אך אינם מוגבלים ל-New-SmbShare (יצירת שיתופים חדשים) ו-Remove-SmbShare (הסרת שיתופים קיימים).

Displaying module import details

ייבוא מחדש של מודול לאותו סשן

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

הפרמטר -Force מאפשר לך להמשיך להשתמש ב-cmdlets ובפונקציות שסופקו על ידי המודול מבלי לצגות ולפתוח מחדש את ההפעלה של PowerShell שלך.

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

הריץ את הפקודה הבאה על מנת להשתמש בפרמטר -Force ב-PowerShell כדי להסיר ולייבא מחדש את המודול SmbShare ממיקומו המקורי.

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

לדוגמה, ה-cmdlet Get-SmbShare במודול המקורי יהפוך להיות Get-NewSmbShare במודול שייובא מחדש.

Import-Module SmbShare -Force -Prefix New

כעת, הרץ את Get-Command למטה כדי לקבל רשימה של כל ה-cmdlets והפונקציות שסופקו על ידי המודול SmbShare שנבחרו (Select-Object) לפי שם.

Get-Command -Module SmbShare | Select-Object Name

שים לב, תוכל לראות שלמודול ה- SmbShare, יש כעת קידומת New התווספה לשמות ה- cmdlets שלו. הפלט הזה מאשר שהמודול יובא מחדש בהצלחה.

Verifying the SmbShare module has been reimported

שימוש בחבילות NuGet לייבוא של מודולי PowerShell באופן ידני

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

תוכל להתקין ולייבא מודולי PowerShell מחבילת NuGet באופן ידני. בהקשר של PowerShell, חבילת NuGet היא אוסף של קבצים הכוללים מודול PowerShell יחד עם כל המודולים או ספריות תלויות הדרושים לתפעול המודול.

כדי לייבא מודול מחבילת NuGet, יש להוריד, לחלץ ולהתקין את חבילת NuGet ידנית עם השלבים הבאים:

1. לנווט לדף PowerShell Gallery של מודול Az.Automation ב-Azure.

2. לאחר מכן, ללחוץ על לשונית Manual Downloadלהוריד את קובץ ה-nupkg הגולמי כדי להוריד את החבילה. המדריך הזה משתמש במודול Az.Automation בגרסה 1.9.1 מגלריית PowerShell של Azure כדוגמה. אך השלבים הם זהים גם לחבילות NuGet אחרות.

Downloading the raw NuGet package (nupkg) file

3. לאחר הורדת הקובץ, להפעיל את הפקודה Unblock-File למטה, שאין לה פלט, אך היא מפתיעה את הקובץ שהורד .nupkg. יש לוודא שהמסלול שלך שונה מזה שבו הורדת את החבילה.

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

Unblock-File -Path C:\PSModules\az.automation.1.9.1.nupkg

4. עכשיו, פתח את קובץ ה-.nupkg שהורדת לתיקייה במחשבך המקומית. ייתכן ותצטרך כלי דחיסה/פיצוץ כגון 7-zip או WinRAR כדי לפתוח את החבילה. חבילת NuGet היא ארכיון ZIP המכיל אוסף של קבצים המהווים מודול.

5. מחק את התוכן הבא מהתיקייה שנפתחה.

תוכן המופק מחבילת NuGet כולל מטא-נתונים וקבצים שאינם נדרשים להתקנת המודול באופן ידני.

Name Type
_rels Folder
Package Folder
[Content_Types].xml XML File
Az.Automation.nuspec XML Manifest File
Deleting unnecessary contents from the extracted NuGet package folder

6. שנה את שם התיקייה שנפתחה בשם מתאר יותר תיאורי כמו az.automation כדי למנוע שגיאות שעלולות להתרחש. זכור לשמור על כל האותיות באותיות קטנות ולהימנע משימוש בתווים מיוחדים בשם התיקייה.

7. לאחר מכן, הפעל את הפקודה $env:PSModulePath למטה כדי למצוא את נתיבי המודול של הפקודה הנוכחית שלך. פקודה זו מחזירה רשימה של כל נתיבי המודול הברירתיים על המערכת שלך. PowerShell מחפשת את הנתיבים הללו כדי לטעון מודולים באופן אוטומטי כאשר שם המודול מצויין בסקריפט או בפקודה.

$env:PSModulePath

שים לב לנתיבים, שכן תזדקק להם בשלב הבא.

Finding out where your modules’ paths are located

8. העתק את התיקייה שקיבלה שם חדש (az.automation) לאחת מהתיקיות שסימנת בשלב השבעה. בכך נגדיר את טווח המודול (ספציפי או לכל המשתמשים).

Path Function
C:\Users\admin\Documents\WindowsPowerShell\Modules Makes the module available for the specific user account (admin). This tutorial uses this location as an example.
C:\Program Files\WindowsPowerShell\Modules Makes the module available for all user accounts on your local machine.

9. עכשיו, הריץ את הפקודה הבאה כדי להתקין ולייבא את המודול (az.automation) לסשן ה־PowerShell שלך. ודא שהחלפת את az.automation בשם הממשי של המודול שלך.

Import-Module -Name az.automation -Verbose
Installing and importing a module from a NuGet package

10. לבסוף, הרץ את הפקודה הבאה Get-Module כדי לוודא אם המודול (az.automation) יובא בהצלחה.

Get-Module -Name az.automation
Verifying the module has been imported successfully

אולי אין לך רצון לסמוך על גילוי אוטומטי. אם כן, ציין את מיקום הקובץ המדויק (C:\az.automation) בעת ייבוא המודול.

Import-Module -Name C:\az.automation -Verbose
Specifying the exact file location when importing a module

מסקנה

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

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

Source:
https://adamtheautomator.com/import-powershell-modules/