ניהול בריכות אפליקציות IIS: מדריך PowerShell

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

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

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

אם אתה משתמש ב-PowerShell לניהול השרתים שלך ב-IIS לראשונה, הרשות הראשונה שלך יכולה להיות לחפש את ComputerName ברוב ה-cmdlets. למרבה הצער, זה אינו המצב.

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

קשור: Invoke-Command: הדרך הטובה ביותר להריץ קוד מרחוק

I know I was pretty frustrated the first time I tried this and didn’t see that familiar ComputerName parameter on many of the cmdlets.

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

רשימת מרכזי אפליקציות ב-IIS באמצעות PowerShell

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

PS> Import-Module WebAdministration

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

PS> Get-ChildItem -Path IIS:\AppPools
 
 Name  State. Applications
 ----- ------ -------------
 GHI  Started

יצירת מאגרי אפליקציות IIS חדשים עם PowerShell

כנראה שכבר יש לי מאגר אחד בשם GHI. אולי אני רוצה ליצור מאגר נוסף. בשימוש במנוע ה-IIS זה פשוט וקל מאוד. מספיק להשתמש ב- New-Item ולציין את הנתיב.

PS> New-Item -Path IIS:\AppPools\MyAppPool
 
 Name      State.  Applications
 -----     ------  -------------
 MyAppPool Started

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

I’ve now created a new app pool. We can then check all of the properties on that app pool using Get-ItemProperty and select all of the properties it returns with Select-Object. This will return all of the property names and values so you can get figure out which ones you need to modify with Set-ItemProperty.

Get-ItemProperty IIS:\AppPools\MyAppPool | select *

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

PS> Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name managedRuntimeVersion -Value 'v4.0'

באמצעות Set-ItemProperty ניתן לשנות כמעט את כל המאפיינים של מאגר אפליקציות.

מחיקת מאגרי אפליקציות באמצעות PowerShell

סופית, סיימנו עם מאגר האפליקציות שלנו וכעת יש להסיר אותו. הפעם יש לנו cmdlet מובנה ב- PowerShell בשם Remove-WebAppPool. פשוט ציין את השם והוא נמחק!

Remove-WebAppPool -Name MyAppPool

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

$appPoolName = 'MyAppPool'
 $scriptBlock = {
    Import-Module WebAdministration
    New-Item -Path IIS:\AppPools\$using:appPoolName
    Set-ItemProperty -Path IIS:\AppPools\$using:appPoolName -Name managedRuntimeVersion -Value 'v4.0'
    Remove-WebAppPool -Name $using:appPoolName
 }
 
 Invoke-Command -ComputerName SOMEIISSERVER -ScriptBlock $scriptBlock

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

אם ברצונך לדעת עוד על ניהול IIS בכלל, תבדוק את עמוד הניהול של IIS בטכנט. שם תמצא את כל ה־cmdlets הכלולים במודול ה־WebAdministration ואיך ניתן להשתמש בהם.

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