سکشن اول: نصب، پیشنیازها و ساخت اولین وب سایت 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
در این بخش، برخی از پرکاربردترین دستورات را بررسی میکنیم:
| عملکرد | دستور |
| نمایش فهرست سایتهای موجود در IIS | Get-IISSite |
| ایجاد یک سایت جدید | New-IISSite |
| حذف یک سایت از IIS | Remove-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 found | IISAdministration نصب نشده | اجرای دستور 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 سرور کار میکنند و زمان پردازش گرافیکی وجود ندارد.


