إدارة حمامات التطبيقات IIS: دورة تعليمية PowerShell

تحتاج إلى مراقبة حمامات التطبيق على خادم ويب IIS الخاص بك؟ إليك دليل حول كيفية إنشاء حمام تطبيق في IIS باستخدام PowerShell.

إلى أين تتجه عند إدارة مزرعة خوادم ويب IIS بمئات أو ربما عشرات من حمامات التطبيق؟ بالطبع، بواسطة نصوص PowerShell! باستخدام وحدة WebAdministrationPowerShell التي تأتي مثبتة كجزء من IIS وقليلاً من PowerShell البعيد، يمكنك بسهولة إنشاء وتعديل وإزالة حمامات التطبيق كما تشاء.

لنقم بمراجعة بعض الأمثلة على كيفية تحقيق ذلك.

إذا لم تستخدم PowerShell أبدًا لإدارة خوادم IIS الخاصة بك من قبل، قد يكون انطباعك الأول هو البحث عن ComputerName في معظم الأوامر النصية. للأسف، هذا ليس الحال.

لإدارة خوادم IIS عن بُعد، نضطر إلى استخدام البرمجة النصية البعيدة في PowerShell مع أمر 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

يتيح ذلك استخدام جميع أوامر 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 على تقنية المعلومات. هنا ستجد جميع الأوامر المضمنة في وحدة WebAdministration وكيف يمكنك استخدامها.

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