PowerShell 101: ייבוא מודולים

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

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

התקפץ ותחפש מודולי PowerShell שיעזרו לך לייעל את זרימת העבודה שלך בביטחון!

בדיקת מודולים שהושבתו

פקודות PowerShell עשויות להכשל עם הודעות שגיאה קריפטיות כאשר המודולים לא נטענים בצורה תקינה. לדוגמה, ניסיון להפעיל Get-ADUser לפני שהתוסף ActiveDirectory נטען יוביל לשגיאת "פקודה לא נמצאה". באופן דומה, ניסיון להשתמש בפקודות של Azure דורש את המודול Az להיות נוכח בהפעלה שלך.

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

כדי לצפות במודולים שהושבתו כרגע, השתמש:

Get-Module

כאשר אתה מפעיל את Get-Module, תראה פלט דומה לזה:

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   7.0.0.0    Microsoft.PowerShell.Management    {Add-Computer, Add-Content, Checkpoint-Computer...}
Manifest   7.0.0.0    Microsoft.PowerShell.Utility       {Add-Member, Add-Type, Clear-Variable...}
Script     2.0.0      PSReadline                         {Get-PSReadLineKeyHandler, Get-PSReadLineOption...}
Binary     1.0.0.1    SmbShare                          {Get-SmbShare, Set-SmbShare, Remove-SmbShare...}

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

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

Get-Module -Name SmbShare -ListAvailable | Select exportedcommands

כאשר אתה מריץ פקודה זו, תראה פלט שמפרט את כל הפקודות הזמינות במודול SmbShare. לדוגמה:

ExportedCommands
----------------
{Get-SmbShare, New-SmbShare, Remove-SmbShare, Set-SmbShare, Get-SmbShareAccess, 
Grant-SmbShareAccess, Block-SmbShareAccess, Revoke-SmbShareAccess, Get-SmbMapping}

פלט זה מציג את כל הפקודות שיכולות לשמש אותך ממודול SmbShare. כל פקודה משמשת למטרה ספציפית לניהול שיתופים של SMB:

  • Get-SmbShare: מפרטת את כל השיתופים של SMB במערכת
  • New-SmbShare: יוצרת שיתוף SMB חדש
  • Remove-SmbShare: מוחקת שיתוף SMB קיים
  • Set-SmbShare: משנה את המאפיינים של שיתוף קיים

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

ייבוא מודולים באופן אוטומטי

כדי לראות כיצד PowerShell מטפל במודולים באופן דינמי, הנה דוגמה המראה את טעינת המודול הדינמית:

PS> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   7.0.0.0    Microsoft.PowerShell.Management    {Add-Computer, Add-Content...}
Manifest   7.0.0.0    Microsoft.PowerShell.Utility       {Add-Member, Add-Type...}
Script     2.0.0      PSReadline                         {Get-PSReadLineKeyHandler...}

PS> Get-SmbShare

PS> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   7.0.0.0    Microsoft.PowerShell.Management    {Add-Computer, Add-Content...}
Manifest   7.0.0.0    Microsoft.PowerShell.Utility       {Add-Member, Add-Type...}
Script     2.0.0      PSReadline                         {Get-PSReadLineKeyHandler...}
Binary     1.0.0.1    SmbShare                          {Get-SmbShare, Set-SmbShare...}

כפי שמוצג לעיל, כאשר אתה מריץ Get-SmbShare, PowerShell מייבא אוטומטית את מודול SmbShare. אתה יכול לראות שמודול זה מופיע ברשימה לאחר הרצת הפקודה.

הסרת מודולים וייבוא מחדש

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

כדי להסיר מודול מהזיכרון:

Remove-Module -Name SmbShare

הַפְּקֻדַּת ‏Remove-Module‏ מְּנַקֵּה אֶת הַמוֹדוּל מִזִכָּרוֹן אֲךָ לֹא מֵסִיר אוֹתוֹ מִן הַמַּעֲרֶכֶת שֶׁלְּךָ. בִּזְמַן רָגִיל, הַסִירָת מוֹדוּלִים הִיא נָדִירָה, אֲךָ הִיא שָׁפוּעַ לְתַרְכּוּבוֹת סְפֵצִיפִיוֹת.

כְּדֵי לְיַבֵּא אֶת הַמוֹדוּל בְּאוֹפֶן יָדָנִי שׁוּב:

Import-Module -Name SmbShare

הַיְבֹאָה הָיְדִינִית יָכוֹלָה לִהְיוֹת מוֹעֶילָה בְּעִת בִּדְיקוּת בַּעֲיוֹת אוֹ בַעֲבוֹדָה בְּסְבָבוֹת מִותָאִמִים.

יְיָבֵא מוֹדוּלִים שׁוּב לְאַחַר שִׁינוּיִים

בְּעֵת עֲבוֹדָה עַל מוֹדוּל בְּפִיתוֹם, יָתֵכְלוּ לְהִתְקִיף מַצָּבִים בַּהֶם הַשִׁינוּיִים שֶׁאַתָּה עוֹשֶׂה אֵינָם מְתַקְּפִים מְאֶת רֹאשׁ. מֵידָע אוֹ תְצַבְּיוֹת יְשֵׁבוֹת עוֹד נִטְעִים בַמוֹדוּל, גּוֹרְמִים לְהַתְנְהֵגוֹת זוֹת.

הַיְבֹאָה שׁוּב לַמוֹדוּל מַבְטִיחָה כִּי PowerShell יַשְׁתִּמֵשׁ בַּגּוֹרֶם הַאַחֲרוֹן. אִם אַתָּה מְשַׁנֶּה מוֹדוּל שֶׁאַתָּה מַפְתֵּחַ, עַלֶיךָ לְיַבֵּא אוֹתוֹ שׁוּב.

אַתָּה יָכוֹל לְהִשְׁתַּמֵּשׁ גַּם בַּפְּקֻדָּה ‏Remove-Module‏ וּבַפְּקֻדָּה ‏Import-Module‏ אוֹ לְפַשֵׁט אֶת הַתְּהִלָּךְ בְּעֶזְרַת הַפָּרַמֶטֶר ‏Force‏:

Import-Module -Name SmbShare -Force

הַפָּרַמֶטֶר ‏Force‏ מְסִיר וּמַטְעִין אֶת הַמוֹדוּל בְּשָׁלֹשִׁים וְאַחַת צְעָדִים, עוֹשֶׂה אוֹתוֹ אִידֵאָלִי לְזִמּוֹן וּלִבְדִיקוֹת עֲבוֹדָה.

סוֹף

בַּמַּדְרִיך הַזֶּה, לָמַדְתָּ כֵּיצַד לְנָהֵל מוֹדוּלִים בְּPowerShell—לְבָדֵק יְבוּאִים וּלַיְיַבֵּא, לְהַסִיר, וּלַיְיַבֵּא מוֹדוּלִים. גַּם חָקַרְתָּ כֵּיצַד PowerShell יַיְבֵּא דִּנָּמִי מוֹדוּלִים וּכֵיצַד לְשֵׁלֵב טִעוּנוֹת לְטַסְטִינְג אוֹ בַּעֲיוֹת בְּתַּצְבִּיוֹת מִותָאִמוֹת.

עַכְשָׁיו, נַעֲשֶׂה שִׁימוּשׁ שֶׁל כֵּישׁוּרִים אֵלֶּה עַל יְדֵי נִסְּיוֹן עִם מוֹדוּלִים מְותָאִמִים בִּכְתָבוֹת שֶׁלְּךָ. חֵקֵר בִּפְיתוֹם הַפִּיתוֹם וְהַשֵׁתֵּפוּךְ בָּפָּרַמֶטֶר ‏Force‏ כְּדֵי לְוַדֵּא שֶׁהַשִׁינוּיִים נִמְשָׁכִים.

שפר את פתרון הבעיות שלך, פיתוח הסקריפטים שלך וזרימת העבודה הכללית שלך ב-PowerShell עם מודולי PowerShell!

Source:
https://adamtheautomator.com/powershell-modules-guide-2/