כישורי PowerShell IIS: יצירה וניהול אתרי אינטרנט

אם אתה ניהלת שרתי Windows, סביר להניח שעבדת עם Internet Information Services (IIS). אתרים הם אחת מתכונותיו העיקריות של IIS, ובאמצעות PowerShell, תוכל לנהל ולאוטומציה בקלות עם סקריפטים של PowerShell IIS!

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

כדי ל נהל את IIS באמצעות PowerShell, נדרש אחד משני המודולים של PowerShell – WebAdminstration או IISAdminstration. מאמר זה מתעסק במודול המודרני יותר, IISAdministration. הסרטון המשלים למאמר זה מדגים את המודול הישן יותר WebAdministration אם ברצונך לראות דרך אלטרנטיבית.

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

IISAdministration נגד WebAdministration Modules

יש לך שני אפשרויות לניהול של IIS. ניתן להשתמש ב-WebAdministration או IISAdministration. אבל אילו מומלץ לך להשתמש בו?

אם אתה משתמש ב-IIS 10.0 או גרסה גבוהה יותר, המודול החדש IISAdministration מציע המון שדרוגים ממודול הישן WebAdministration.

הנה כמה נקודות עיקריות:

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

מאמר זה יתמקד במודול החדש יותר של IISAdministration.

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

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

The Windows 10 “Turn Windows features on or off” dialogue

מומלץ שתהיה מוכר ביסודות של HTML. יהיה צעד שבו שימוש ב- HTML ישחק תפקיד בדוגמאות הבאות. אך אל דאגה, תוכל להעתיק ולהדביק את הקוד!

כל הדוגמאות בפוסט בבלוג זה נוצרו באמצעות IIS 10.0 ב- Windows 10 ו- PowerShell 7 Preview 6. פקודות IISAdministration הן אותן עבור Windows Server 2016 & 2019 ועובדות עם Windows PowerShell 5.1.

זהו עבור הכלים שנעשה בהם שימוש, עכשיו למשאבים הנדרשים כדי לעקוב.

התקנת המודול IISAdministration

פעם שאתה עומד בדרישות המוקדמות, זה הזמן לבצע קצת עבודת התקנה. למזלנו, אין הרבה עבודת התקנה לבצע מאחר והמודול של PowerShell שאתה צריך (IISAdministration) זמין בחינם בגלריה של PowerShell.

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

PS> Install-Module -Name 'IISAdministration'

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

גילוי הפקודות הזמינות

כמו כל מודול PowerShell שאולי אינך מכיר בו, אחת הפקודות הראשונות שכדאי להשתמש בהן כדי לגלות את התצורה של הפקודות במודול היא Get-Command. באמצעות הפקודה Get-Command -Module 'IISAdministration' כפי שמוצג למטה, תוכל לראות מה אפשרי עם המודול הזה.

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

Get-Command -Module ‘IISAdministration’ results

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

יצירת האתר הראשון שלך

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

יצירת התיקייה והדף באינטרנט

בראש דבר, יש ליצור תיקייה. כדי לעשות זאת, ניתן להשתמש ב־New-Item. הקוד למטה ייצור תיקייה ב־C:\MyWebsite.

PS> New-Item -ItemType Directory -Name 'MyWebsite' -Path 'C:\'

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

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

כעת ניתן ליצור קובץ בשם index.html בתיקיית C:\Mywebsite כפי שמוצג למטה.

PS> New-Item -ItemType File -Name 'index.html' -Path 'C:\MyWebsite\'

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

<!DOCTYPE html>
<html>
    <head>
         <title>IIS Administration With PowerShell Demo</title>
    </head>
    <body>
        <h1>IIS Administration with PowerShell Demo</h1>
        <p>Thank you for reading this post on how to administer IIS with PowerShell!</p>

        <p>This page was created using the newer IISAdministration PowerShell module.</p>
        <h2>First Steps</h2>
        <p>Keep calm and learn PowerShell.</p>
    </body>
</html>

יצירת אתר IIS

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

לפי ברירת מחדל, IIS יוצר ספריית וירטואלית בתוך C:\inetpub\wwwroot. הספרייה מכילה את כל נכסי עמוד האינטרנט המוגדרים כברירת מחדל והמשאבים עבור IIS. באפשרותך להשתמש בספריית C:\inetpub\wwwroot ברירת המחדל גם כן לאחסון הקבצים שלך, אך לדוגמאות אלו, לא תוחשב בשימוש בהם כדי לשמור על הנתיבים כקצרים ככל האפשר. לכן אתה משתמש ב־C:\MyWebsite במקום זאת.

ליצירת ספריית וירטואלית (אתר) חדשה, השתמש ב־New-IISSite cmdlet. פקודת זו מאפשרת לך ליצור אתר IIS חדש.

במאמר זה, צור אתר בשם Mywebsite המצביע לספריית C:\MyWebsite המאזינה בפורט 8088. בחלק הקטע הבא, תוכל לראות כיצד לעשות זאת באמצעות פקודת ה־New-IISSite.

החלק היחיד שעשוי להיות מבלבל הוא הפרמטר BindingInformation. פרמטר זה מאפשר רק תחבירי חיבור. בקטע הקוד הזה, New-IISSite ייצור אתר שמחובר לכתובת IP ( * היא אותו דבר כמו 127.0.0.1), הפורט TCP להאזנה ולאחריו כל כותרות HTTP.

ניתן להסביר תחבירי חיבור כפרוטוקול, עקב מקור:פורט:יעד . בדוגמה זו, הגדרת את IIS להאזין לבקשות HTTP מכל כתובת IP () בפורט 8088 והיעד הוא המחשב הלוקלי.*

PS> New-IISSite -Name 'MyWebsite' -PhysicalPath 'C:\MyWebsite\' -BindingInformation "*:8088:"

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

Creating a New Website in IIS

כברירת מחדל, תצורת האתר מופעלת והשרת שלך מתחיל לשרת את בקשות ה-HTTP ההן. פתח את דפדפן האינטרנט שלך ונווט אל המחשב המקומי בפורט 8088. כעת אתה אמור לראות את הדף האינטרנטי שיצרת קודם.

MyWebSite IIS site in a web browser

מזל טוב! הצלחת להקים את האתר הראשון שלך על IIS באמצעות PowerShell!

עכשיו שיש לך אתר פועל, הגיע הזמן ללמוד כיצד לנהל את האתר ואת שרת ה-IIS שמכיל אותו.

ניהול האתר ב-IIS

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

כדי לנהל את האתר ב-PowerShell, יש לך שני cmdlets לעבוד איתם – Start-IISSite ו- Stop-IISSite. שני ה-cmdlets האלה פועלים בדיוק כמו ש-cmdlets  Stop-Service ו- Start-Service פועלים.

לעצירת אתר דומה לעצירת שירות Windows. אתה מונע או מאפשר גישה לאתר הנגיש על ידי פרוטוקול הנשרת על פורט ייחודי על ידי IIS. אך אתה לא עוצר את מארח ה-IIS. ניתן לעצור ולהפעיל אתרים ב-אופן יחידי.

עצירת אתר יחיד

כדי לעצור אתר ב-IIS, יש להשתמש בפקודת ה-Stop-IISSite. כברירת מחדל, האתר שיצרת בשלב הקודם אמור להיות במצב Started. אם תעצור את האתר ותמנע גישה ל-MyWebsite, הרץ את Stop-IISSite וספק את השם כפי שמוצג למטה. קטע הקוד הזה עוצר את האתר MyWebsite מלהיות משרת על ידי ה-IIS. לאחר עצירת האתר, לא תהיה לך עוד אפשרות לגשת אליו.

PS> Stop-IISSite -Name "MyWebsite"

דוגמא לבדיקת מצב האתר כ-Started, עצירתו ובדיקת המצב שוב מוצגת למטה. בדוגמא זו, אתה:

  1. מקבל את מצב האתר MyWebsite באמצעות Get-IISSite.
  2. מבצע את פקודת ה-Stop-IISSite נגד האתר MyWebsite. פקודה זו סוגרת את הגישה לאתר. מכיוון שפעולה זו עושה שינויים אופרטיביים, תתבקש לאישור.
  3. הרצת Get-IISSite שוב כדי לוודא שהאתר MyWebsite עצור ולהבחין במצב Stopped.
Getting, stopping, and confirming MyWebsite state

עצירת כל האתרים

למעלה עצרת אתר יחיד, אך ניתן גם לעצור את כל האתרים בקלות. על ידי השימוש בצינור והעברת הפלט של Get-IISSite אל Stop-IISSite, PowerShell יספור את כל האתרים ויעצור אותם כולם. בדוגמא הקודמת, הפרמטר האופציונלי Verbose משמש להצגת מידע נוסף.

Get-IISSite | Stop-IISSite -Verbose
Stopping all IIS sites with PowerShell

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

התחלת אתר יחיד

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

PS> Start-IISSite -Name 'MyWebsite'

בעת ביצוע, תוכל לבדוק מחדש את המצב באמצעות Get-IISSite. כאשר תעשה זאת, אתה אמור לראות פלט דומה לתמונה למטה.

Checking the status of MyWebsite using Get-IISSite and starting the site with Start-IISSite

וכעת אמור להיות לך גישה מחדש לאתר שלך בכתובת http://localhost:8088 אם תרענן את הדפדפן שלך.

התחלת כל האתרים

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

PS> Get-IISSite | Start-IISSite

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

Using the pipeline to start all sites on host

ניהול חיבורי הרשת

הגיע הזמן לבצע מספר משימות מנהליות נפוצות על האתר MyWebsite. אחת מהמשימות הנפוצות ביותר היא שינוי חיבורי הרשת.

כאשר יצרת את האתר שלי, שימוש התחברות של MyWebsite היה בתחבורת *:8088:. סוג זה של תחבורה מייצג קריאה לכתובת ה-IP 127.0.0.1, בפורט 80 וללא כל כותרת HTTP. נניח כי החלטת שאתה רוצה במקום זאת שהאתר יאזין לפתח 9000. על מנת לעשות זאת, יהיה עליך לשנות את התחבורות האתר.

בדיקת תחבורות קיימות

לפני שתוכל לשנות את התחבורות של האתר, עליך לבדוק את התצורה הנוכחית. דרך אחת לעשות זאת היא לבדוק את מאפיין ה-Binding שמוחזר על ידי Get-IISSite. שים לב בחלק הבא איך לעשות זאת. בקטע הקוד הבא, Get-IISSite מחפש את האתר MyWebSite, ומחזיר רק את מאפיין ה-Bindings.

PS> (Get-IISSite -Name 'MyWebsite').Bindings

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

Example 1: Finding binding information

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

Example 2: Finding binding information

הסרת תחבורות

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

PS> Stop-IISSite -Name 'MyWebsite'

לאחר שהאתר מופסק, תוכל כעת להסיר את התחבורה הקיימת שמחברת את האתר MyWebsite לפתח 8088. לעשות זאת, תוכל להשתמש בRemove-IISSiteBinding cmdlet.

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

PS> Remove-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:8088:"

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

Removing site binding using Verbose parameter

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

כעת ניתן להפעיל שוב את Get-IISSite -Name 'MyWebsite'. כעת תראה שהמידע על הקישור הוסר כפי שמוצג על ידי הערך הריק מתחת ל־Bindings.

Confirming the old bindings were removed

אף על פי שהאתר פורסם, IIS אין לו דרך לדעת כיצד להפנות תעבורה אליו.

חשוב להקצות לפחות קישור אחד לאתר שלך. כדי להדגיש לך את החשיבות, נסה לנווט אל http://localhost:8088/index.html שוב. אם השתמשת בדפדפן האינטרנט Mozilla Firefox, ייתכן שתראה את ההודעה הבאה.

Can’t establish a connection

יצירת קישורים חדשים

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

כדי ליצור קישור חדש, השתמש ב־New-IISSiteBinding cmdlet. מאחר ואתה צריך לקשור את פורט 9000 לאתר MyWebsite כעת, ספק את תחביר הקישור הנכון כפי שמוצג למטה.

PS> New-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:9000:"

פעם שיצרת את הקשר החדש, התחל שוב את האתר עם Start-IISSite. זכור שכדי ליצור את הקשר החדש זה, הוא דרוש להוריד את האתר.

כשהאתר מתחיל שוב, אתה צריך כעת להגיע אליו בפורט 9000. כדי לאמת זאת, פתח דפדפן האינטרנט שלך ונווט אל http://localhost:9000. עכשיו אתה אמור לראות שהעמוד פועל שוב תחת פורט 9000.

Same page, different TCP port

הסרת אתר

אם עברת כעת דרך מדריך ואינך מתכוון לשמור על האתר MyWebsite, הגיע הזמן לנקות אותו. כדי להסיר את האתר, השתמש ב־Remove-IISSite cmdlet.

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

ניתן לראות דוגמה להסרת האתר MyWebsite בשימוש בפרמטר WhatIf למטה.

Remove-IISSite -Name 'MyWebSite' -WhatIf
Being careful with destructive cmdlets by using -WhatIf !

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

כאשר אתה משתמש ב־Remove-IISSite cmdlet, האתר אינו נמחק. הוא מוסר מהתצורה של IIS. הקבצים לאתר נשמרים שלמים.

סיכום

במאמר זה, למדת ליצור אתר באמצעות מודול IISAdministration. ראית כיצד לבצע פעולות מנהליות הנדרשות לתחזוקת האתר. עכשיו אתה יודע מספיק על היסודות כדי לעבוד עם כל מארח IIS מודרני באמצעות PowerShell!

קריאה נוספת

Source:
https://adamtheautomator.com/powershell-iis/