رفتن به محتوا
مدیریت سرور

آموزش جامع مدیریت IIS در پاورشل (PowerShell)

سکشن اول: نصب، پیش‌نیازها و ساخت اولین وب‌ سایت IIS با PowerShell مدیریت سرورهای ویندوز، بدون استفاده از ابزارهای خودکارسازی مانند PowerShell تقریباً غیرممکن است. این ابزار قدرتمند به مدیران شبکه و توسعه‌ دهندگان اجازه می‌دهد که وظایف پیچیده سروری را در چند خط کد ساده انجام دهند،…

11 دقیقه مطالعهبلاگ ابر آراد
مجله ابر آرادINSIGHTS / مدیریت سرور

سکشن اول: نصب، پیش‌نیازها و ساخت اولین وب‌ سایت IIS با PowerShell

مدیریت سرورهای ویندوز، بدون استفاده از ابزارهای خودکارسازی مانند PowerShell تقریباً غیرممکن است. این ابزار قدرتمند به مدیران شبکه و توسعه‌ دهندگان اجازه می‌دهد که وظایف پیچیده سروری را در چند خط کد ساده انجام دهند، از تنظیمات شبکه و کاربران گرفته تا مدیریت سرویس‌ هایی مثل IIS (Internet Information Services).

در این مقاله از سری آموزش‌های سیستم‌ عامل در بلاگ ابرآراد، قصد داریم به‌صورت گام‌ به‌ گام یاد بگیریم که چگونه می‌توانیم وب‌ سرور IIS را از طریق PowerShell مدیریت کنیم، سایت بسازیم، پورت‌ ها را تغییر دهیم و در نهایت کل فرآیند مدیریت را خودکار کنیم.
برای اجرای پایدار IIS و انجام عملیات PowerShell بدون وقفه، استفاده از یک زیرساخت ابری مقیاس‌پذیر ضروری است و سرورهای ابری ابرآراد این انعطاف را برای تیم‌های فنی فراهم می‌کنند.

آشنایی با IIS و نقش PowerShell در مدیریت آن

IIS یا Internet Information Services یکی از محبوب‌ترین وب‌ سرورهای جهان است که توسط مایکروسافت برای سیستم‌ عامل ویندوز توسعه یافته. این سرویس به شما امکان می‌دهد سایت‌ ها و اپلیکیشن‌ های تحت وب را روی یک سرور ویندوزی اجرا و مدیریت کنید.

اما کار با رابط گرافیکی IIS Manager همیشه کارآمد نیست، به‌ویژه وقتی باید ده‌ها وب‌ سایت را روی سرورهای مختلف مدیریت کنید. در اینجاست که PowerShell وارد عمل می‌شود؛ با آن می‌توانید:

  • ایجاد و حذف سایت‌ ها را خودکار کنید؛
  • پورت‌ ها و Bindings را تغییر دهید؛
  • سایت‌ ها را به‌صورت گروهی Stop یا Start کنید؛
  • تنظیمات را از سروری به سرور دیگر انتقال دهید.

در واقع، PowerShell همان چیزی است که IIS را از یک ابزار مدیریتی ساده به یک پلتفرم DevOps-ready تبدیل می‌کند.

مقایسه دو ماژول مهم: WebAdministration و IISAdministration

در PowerShell دو ماژول اصلی برای مدیریت IIS وجود دارد:

ماژولتوضیحنسخه‌های قابل استفادهویژگی‌ها
WebAdministrationنسخه قدیمی‌تر و سازگار با IIS 7 تا 8.5ویندوز سرورهای قدیمیساختار ساده ولی محدودیت در cmdletها
IISAdministrationنسخه جدیدتر از IIS 10 به بعدویندوز 10 و Server 2016+عملکرد سریع‌تر، پشتیبانی از REST API و دستورات مدرن‌تر

اگر از IIS 10 یا نسخه‌های بالاتر استفاده می‌کنید، ماژول IISAdministration گزینه‌ی حرفه‌ای‌تر است. این ماژول به‌صورت پیش‌فرض در PowerShell 5.1 به بالا پشتیبانی می‌شود و بسیاری از مشکلات عملکردی نسخه قدیمی را برطرف کرده است.

پیش‌ نیازهای کار با IIS در PowerShell

پیش از شروع، اطمینان حاصل کنید که شرایط زیر برقرار است:

PowerShell نسخه ۵.۱ یا بالاتر (در ویندوز 10 یا Server 2016 به بالا)
 IIS 10 یا جدیدتر نصب شده باشد.
 دسترسی ادمین به PowerShell (Run as Administrator).
 اتصال اینترنتی برای دانلود ماژول از گالری رسمی PowerShell Gallery.

اگر به اینترنت دسترسی ندارید، می‌توانید ماژول IISAdministration را روی سیستم دیگر دانلود و سپس پوشه‌ی آن را به مسیر زیر کپی کنید:

C:\Program Files\WindowsPowerShell\Modules\

اگر قصد دارید محیطی ایزوله، امن و قابل‌ کنترل برای اجرای IIS و PowerShell داشته باشید، استفاده از ابرخصوصی (VPC) بهترین گزینه برای جداسازی ترافیک و مدیریت سطح دسترسی است.

نصب ماژول IISAdministration

برای نصب ماژول جدید کافی است PowerShell را در حالت Administrator باز کنید و دستور زیر را اجرا نمایید:

Install-Module -Name “IISAdministration”

در اولین اجرا ممکن است PowerShell از شما بخواهد که منبع نصب را تأیید کنید. گزینه Yes to All (A) را انتخاب کنید تا فرآیند به‌طور کامل انجام شود.

پس از نصب موفق، می‌توانید ماژول را بارگذاری کنید:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

Import-Module IISAdministration

برای اطمینان از بارگذاری موفق، دستور زیر را اجرا کنید:

Get-Command -Module IISAdministration

این دستور تمام cmdlet های مرتبط با IIS را به شما نشان می‌دهد، از ایجاد سایت گرفته تا حذف و تغییر Bindings.

آشنایی با دستورات پایه (Cmdlets) در IISAdministration

در این بخش، برخی از پرکاربردترین دستورات را بررسی می‌کنیم:

عملکرددستور
نمایش فهرست سایت‌های موجود در IISGet-IISSite
ایجاد یک سایت جدیدNew-IISSite
حذف یک سایت از IISRemove-IISSite
راه‌اندازی مجدد یک سایتStart-IISSite
توقف موقت یک سایتStop-IISSite
افزودن یک اتصال (Binding) جدیدNew-IISSiteBinding
حذف اتصال فعلی سایتRemove-IISSiteBinding

نکته: ساختار PowerShell در IISAdministration بسیار شیء‌گراست؛ به‌جای کار با رابط گرافیکی، شما در واقع با اشیای سایت، Binding، یا ApplicationPool مستقیماً کار می‌کنید.

ایجاد اولین وب‌ سایت در IIS با استفاده از PowerShell

حالا به بخش جذاب می‌رسیم: ساخت اولین وب‌ سایت از طریق PowerShell.
این فرآیند شامل سه مرحله‌ی ساده است: ایجاد پوشه، افزودن فایل HTML و راه‌ اندازی سایت.
معمولاً برای راه‌ اندازی پروژه‌های وب در مقیاس کوچک تا متوسط، ساده‌ترین مسیر، استفاده از سرورهای ابری است که امکان استقرار سریع IIS را تنها در چند دقیقه فراهم می‌کنند.

گام ۱: ایجاد پوشه‌ی وب‌ سایت

ابتدا مسیر فایل‌ های وب‌ سایت را مشخص کنید:

New-Item -ItemType Directory -Path “C:\MyWebsite”

گام ۲: ایجاد فایل index.html

برای تست تنظیمات IIS، یک صفحه HTML ساده بسازید:

New-Item -ItemType File -Path “C:\MyWebsite\index.html”

سپس محتوای زیر را در آن قرار دهید:

<!DOCTYPE html>

<html>

<head>

<title>IIS Administration With PowerShell Demo</title>

</head>

<body>

<h1>مدیریت IIS با پاورشل</h1>

<p>این صفحه با استفاده از ماژول IISAdministration ایجاد شده است.</p>

</body>

</html>

گام ۳: ایجاد سایت جدید در IIS

اکنون با دستور زیر سایت را ایجاد کنید:

New-IISSite -Name “MyWebsite” -PhysicalPath “C:\MyWebsite” -BindingInformation “*:8088:”

با اجرای دستور بالا، سایت جدیدی با پورت 8088 در IIS ایجاد می‌شود. برای مشاهده‌ی نتیجه، مرورگر خود را باز کرده و آدرس زیر را وارد کنید:

http://localhost:8088

اگر صفحه HTML را می‌بینید، یعنی اولین وب‌ سایت PowerShellی شما با موفقیت ساخته شده است.

بررسی وضعیت سایت‌ ها در IIS

برای مشاهده‌ی لیست سایت‌ های فعال یا متوقف، از دستور زیر استفاده کنید:

Get-IISSite

این دستور خروجی مشابه زیر را نمایش می‌دهد:

Name        ID  State     Physical Path          Bindings

—-        —  —–     ————–         ——–

MyWebsite   1   Started   C:\MyWebsite\          http *:8088:

Default Web 2   Stopped   C:\inetpub\wwwroot\    http *:80:

با این دستور می‌توانید وضعیت هر سایت، مسیر فیزیکی آن و پورت‌ های Bind شده را بررسی کنید.

مدیریت اولیه (Start/Stop) سایت

اگر نیاز دارید سایت را به‌طور موقت متوقف کنید، کافی است بنویسید:

Stop-IISSite -Name “MyWebsite”

و برای راه‌ اندازی مجدد:

Start-IISSite -Name “MyWebsite”

با اجرای دوباره‌ی Get-IISSite، می‌توانید مطمئن شوید سایت در حالت Started یا Stopped قرار دارد.

چرا PowerShell برای مدیران سیستم ضروری است؟

در دنیای امروز که سرورها باید در کسری از ثانیه تنظیم و راه‌ اندازی شوند، رابط گرافیکی دیگر پاسخگو نیست. PowerShell به مدیران سیستم این امکان را می‌دهد تا با چند خط کد ساده، ده‌ها سرور IIS را هم‌زمان کنترل کنند.

برخی از مزایای کلیدی:

  • صرفه‌ جویی در زمان با اسکریپت‌ نویسی خودکار
  • یکپارچگی با ابزارهای DevOps مانند Jenkins و Ansible
  • کاهش خطاهای انسانی در پیکربندی‌ های تکراری
  • قابلیت Remote Management از طریق شبکه

در این بخش یاد گرفتیم که چگونه با نصب ماژول IISAdministration در PowerShell، یک وب‌ سایت جدید را از صفر ایجاد کنیم. همچنین با دستورات پایه‌ی مدیریت IIS آشنا شدیم، از New-IISSite تا Get-IISSite.
وقتی تعداد سایت‌ ها و سرویس‌های IIS افزایش پیدا می‌کند، داشتن یک شبکه خصوصی مجزا (VPC) تأثیر مستقیمی روی پایداری، امنیت و کنترل عملیات دارد.

سکشن دوم: مدیریت، بهینه‌ سازی و اتوماسیون IIS در PowerShell

در سکشن اول یاد گرفتیم چطور با نصب ماژول IISAdministration، اولین وب‌ سایت خود را از طریق PowerShell راه‌ اندازی کنیم. حالا در سکشن دوم وارد بخش حرفه‌ای‌تر و کاربردی‌تر این آموزش می‌شویم:
مدیریت چرخه‌ی حیات سایت‌ ها، تغییر پورت‌ ها و Bindings، حذف یا راه‌ اندازی مجدد سایت، و در نهایت ساخت اسکریپت‌ هایی که تمام این کارها را به‌صورت خودکار و ایمن انجام می‌دهند.

مدیریت سایت‌ ها در PowerShell (Start, Stop, Restart)

PowerShell به شما اجازه می‌دهد بدون نیاز به باز کردن IIS Manager، تمام سایت‌ ها را از طریق خط فرمان مدیریت کنید.

از مطالعه تا انتخابسرویس مناسب پروژه‌تان را بررسی کنید.

محصولات ابر آراد را ببینید و مشخصات هر سرویس را مقایسه کنید.

بررسی محصولات

توقف یک سایت خاص

اگر قصد دارید یک وب‌ سایت را برای مدتی از دسترس خارج کنید، از دستور زیر استفاده کنید:

Stop-IISSite -Name “MyWebsite”

این دستور سایت را به حالت Stopped می‌برد و از پاسخ‌گویی آن در پورت‌ های مشخص جلوگیری می‌کند.

توقف تمام سایت‌ ها

برای متوقف کردن همه‌ی وب‌ سایت‌ های فعال در سرور:

Get-IISSite | Stop-IISSite -Verbose

گزینه‌ی -Verbose جزئیات عملکرد هر سایت را در خروجی نمایش می‌دهد.

راه‌ اندازی مجدد سایت‌ ها

اگر پس از ویرایش فایل‌ های پیکربندی یا تغییر پورت نیاز به راه‌ اندازی مجدد دارید:

Start-IISSite -Name “MyWebsite”

یا برای راه‌ اندازی همه‌ی سایت‌ ها:

Get-IISSite | Start-IISSite

مدیریت اتصال‌ ها (Bindings) در IIS

هر وب‌ سایت در IIS با یک یا چند Binding شناخته می‌شود؛ شامل آدرس IP، پورت، و نام دامنه (Host Header). PowerShell کنترل کاملی بر این تنظیمات به شما می‌دهد.

مشاهده Bindings فعلی

برای دیدن پورت‌ ها و اتصال‌ های هر سایت:

(Get-IISSite -Name “MyWebsite”).Bindings

خروجی به‌صورت یک شیء با اطلاعات bindingInformation، protocol و sslFlags نمایش داده می‌شود.

حذف یک اتصال

فرض کنید سایت شما روی پورت 8088 است و می‌خواهید آن را تغییر دهید. ابتدا باید Binding فعلی را حذف کنید:

Stop-IISSite -Name “MyWebsite”

Remove-IISSiteBinding -Name “MyWebsite” -BindingInformation “*:8088:”

پس از حذف اتصال، می‌توانید پورت جدید را اضافه کنید.

افزودن Binding جدید

برای افزودن اتصال جدید (مثلاً پورت 9000):

New-IISSiteBinding -Name “MyWebsite” -BindingInformation “*:9000:” -Protocol “http”

سپس سایت را دوباره اجرا کنید:

Start-IISSite -Name “MyWebsite”

اکنون وب‌ سایت شما روی پورت 9000 در دسترس خواهد بود:

http://localhost:9000

حذف یک وب‌ سایت به‌صورت ایمن

گاهی نیاز است سایتی را به‌طور کامل از IIS حذف کنید، اما حذف مستقیم بدون بررسی می‌تواند خطرناک باشد. برای جلوگیری از اشتباهات، PowerShell پارامتر مفیدی به نام -WhatIf دارد.

مثال: بررسی پیش از حذف

Remove-IISSite -Name “MyWebsite” -WhatIf

این دستور حذف واقعی را انجام نمی‌دهد؛ بلکه فقط نشان می‌دهد که چه اتفاقی می‌افتاد اگر دستور اجرا می‌شد.

اگر مطمئن بودید، دستور زیر را بدون -WhatIf اجرا کنید:

Remove-IISSite -Name “MyWebsite”

نکته: حذف سایت فقط پیکربندی آن را از IIS پاک می‌کند، اما فایل‌ های فیزیکی شما (در مسیر C:\MyWebsite) باقی می‌مانند.

خودکارسازی وظایف (Automation) با اسکریپت پاورشل

یکی از بزرگ‌ترین مزیت‌های PowerShell، امکان نوشتن اسکریپت‌ هایی برای انجام خودکار وظایف تکراری است.
مثلاً می‌توانید اسکریپتی بسازید که روزانه تمام سایت‌ های متوقف‌ شده را بررسی کند و در صورت نیاز، آن‌ها را به‌طور خودکار راه‌ اندازی کند.

نمونه اسکریپت: راه‌ اندازی خودکار سایت‌ ها

$sites = Get-IISSite | Where-Object {$_.State -eq “Stopped”}

foreach ($site in $sites) {

    Start-IISSite -Name $site.Name

    Write-Host “Started site:” $site.Name

}

این اسکریپت تمام سایت‌ های متوقف را پیدا کرده و به‌صورت خودکار فعال می‌کند.

نمونه اسکریپت: بکاپ از تنظیمات IIS

$backupPath = “C:\IIS-Backup\config_$((Get-Date).ToString(‘yyyyMMdd_HHmm’)).zip”

Compress-Archive -Path “C:\Windows\System32\inetsrv\config” -DestinationPath $backupPath

Write-Host “Backup completed at $backupPath”

با این اسکریپت می‌توانید پیکربندی کامل IIS را آرشیو کنید، مخصوصاً قبل از اعمال تغییرات بزرگ.

نکات امنیتی در مدیریت IIS با PowerShell

امنیت در IIS، بخش حیاتی هر سرور ویندوزی است. در ادامه چند توصیه کلیدی آورده شده است:

فعال‌ سازی SSL در Binding

در هنگام ایجاد Binding جدید می‌توانید SSL را با پارامتر -Protocol https و تنظیم گواهی فعال کنید:

$thumbprint = “YourCertificateThumbprintHere”

# اینجا باید Thumbprint گواهی خود را قرار دهید

New-IISSiteBinding -Name “MyWebsite” -BindingInformation “*:443:” -Protocol https -CertificateThumbprint $thumbprint -SslFlags 1

محدودسازی دسترسی PowerShell

فقط حساب‌های ادمین باید به PowerShell برای IIS دسترسی داشته باشند. می‌توانید از Group Policy برای غیرفعال‌ سازی دستورات اجرایی برای کاربران عادی استفاده کنید.

حذف ماژول‌ های غیرضروری IIS

با دستور زیر می‌توانید لیست ماژول‌ ها را ببینید و ماژول‌ های غیرضروری را حذف کنید:

Get-WebGlobalModule

Remove-WebGlobalModule -Name “ModuleName”

بررسی لاگ‌ ها برای فعالیت‌های غیرمجاز

می‌توانید با دستور زیر لاگ‌ ها را مانیتور کنید:

Get-Content “C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log” -Tail 10

با این روش، آخرین درخواست‌های دریافتی را مستقیماً در PowerShell مشاهده می‌کنید.

خطاهای متداول و روش رفع آن‌ها

خطاعلت محتملراه‌حل
New-IISSite : Binding already existsپورت قبلاً استفاده شدهپورت جدید انتخاب کنید یا Binding قدیمی را حذف کنید
Access deniedاجرای PowerShell بدون دسترسی ادمینPowerShell را با گزینه Run as Administrator باز کنید
Module not foundIISAdministration نصب نشدهاجرای دستور Install-Module -Name IISAdministration
Site not foundنام سایت اشتباهدستور Get-IISSite برای بررسی نام صحیح استفاده شود
Port not reachableپورت در فایروال بسته استپورت را با دستور New-NetFirewallRule باز کنید

مزایای کار با IIS در PowerShell

کار با پاورشل در مقایسه با رابط گرافیکی IIS Manager مزایای متعددی دارد:

  • سرعت بالا: اجرای ده‌ها عمل مدیریتی در چند ثانیه
  • اتوماسیون کامل: بدون نیاز به ورود دستی اطلاعات
  • تکرارپذیری: اعمال تنظیمات مشابه روی چند سرور
  • پشتیبان‌گیری آسان: استخراج تنظیمات به فایل متنی یا JSON
  • مناسب برای DevOps: ترکیب با Jenkins، GitHub Actions و Azure

جمع‌بندی

مدیریت IIS با PowerShell یکی از مهارت‌های کلیدی برای هر مدیر سیستم یا متخصص DevOps است.
در این آموزش دو بخشی یاد گرفتید:

  • نصب و راه‌ اندازی IISAdministration Module
  • ایجاد سایت جدید با PowerShell
  • مدیریت، توقف و راه‌ اندازی مجدد سایت‌ ها
  • تغییر پورت‌ ها و Bindings
  • حذف و پشتیبان‌گیری از سایت‌ ها
  • نکات امنیتی و اسکریپت‌ نویسی اتوماسیون

اکنون می‌توانید با چند خط کد، کل زیرساخت وب سرور خود را کنترل کنید، از ایجاد سایت گرفته تا مانیتورینگ امنیتی.

سوالات متداول

1- آیا می‌توان IIS را بدون دسترسی Administrator مدیریت کرد؟

خیر، اکثر cmdlet های IIS به دسترسی سطح مدیر نیاز دارند.

2- تفاوت IISAdministration و WebAdministration چیست؟

اولی نسخه مدرن‌تر با پشتیبانی از REST و cmdlet های سریع‌تر است، دومی قدیمی‌تر و محدودتر.

3- آیا می‌توان از PowerShell برای چند سرور IIS همزمان استفاده کرد؟

بله، با استفاده از PowerShell Remoting (Enter-PSSession) می‌توانید چند سرور را از راه دور مدیریت کنید.

4- آیا تغییر پورت در IIS باعث از دسترس خارج شدن سایت می‌شود؟

فقط تا زمانی که پورت جدید به درستی Bind نشده باشد. پس از تغییر و راه‌ اندازی مجدد، سایت مجدد فعال می‌شود.

5- آیا PowerShell برای کارهای روزمره IIS سریع‌تر از GUI است؟

قطعاً. چون دستورات به‌صورت مستقیم با API سرور کار می‌کنند و زمان پردازش گرافیکی وجود ندارد.

قدم بعدی شمابرای انتخاب سرویس، درباره نیاز پروژه صحبت کنیم.

از صفحه تماس ابر آراد، مسیر ارتباط با تیم را انتخاب کنید.

گفت‌وگو با تیم آراد
به انتهای این مقاله رسیدید. مسیر یادگیری را با مقاله‌های دیگر ادامه دهید.
گفت‌وگو درباره این مقاله

دیدگاه‌ها و پرسش‌های شما

تجربه یا پرسش خود را درباره موضوع مقاله با ما در میان بگذارید.

هنوز دیدگاهی ثبت نشده است؛ شما گفت‌وگو را شروع کنید.

دیدگاه خود را بنویسید

نشانی ایمیل شما نمایش داده نمی‌شود. فیلدهای ستاره‌دار الزامی هستند.