Skip to content

Commit e3651a4

Browse files
authored
Merge pull request #54145 from MicrosoftDocs/NEW-internet-information-services-administration-management
New internet information services administration management
2 parents 142ec7c + 9e5cc72 commit e3651a4

19 files changed

Lines changed: 965 additions & 0 deletions
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.devrel.manage-internet-information-services.introduction
3+
title: Introduction
4+
metadata:
5+
title: Introduction
6+
description: Module introduction.
7+
ms.date: 04/03/2026
8+
author: Orin-Thomas
9+
ms.author: orthomas
10+
ms.topic: unit
11+
durationInMinutes: 1
12+
content: |
13+
[!include[](includes/1-introduction.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.devrel.manage-internet-information-services.remote-administration
3+
title: Remote administration
4+
metadata:
5+
title: Remote administration
6+
description: How to remotely manage IIS using IIS Manager, PowerShell, and command-line tools.
7+
ms.date: 04/03/2026
8+
author: Orin-Thomas
9+
ms.author: orthomas
10+
ms.topic: unit
11+
durationInMinutes: 15
12+
content: |
13+
[!include[](includes/2-remote-administration.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.devrel.manage-internet-information-services.scripting-automation
3+
title: Scripting automation
4+
metadata:
5+
title: Scripting automation
6+
description: How to automate IIS management tasks using PowerShell and AppCmd.
7+
ms.date: 04/03/2026
8+
author: Orin-Thomas
9+
ms.author: orthomas
10+
ms.topic: unit
11+
durationInMinutes: 12
12+
content: |
13+
[!include[](includes/3-scripting-automation.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.devrel.manage-internet-information-services.monitor
3+
title: Monitoring
4+
metadata:
5+
title: Monitoring
6+
description: How to monitor IIS performance and health using built-in tools and best practices.
7+
ms.date: 04/03/2026
8+
author: Orin-Thomas
9+
ms.author: orthomas
10+
ms.topic: unit
11+
durationInMinutes: 15
12+
content: |
13+
[!include[](includes/4-monitor.md)]
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.devrel.manage-internet-information-services.knowledge-check
3+
title: Knowledge check
4+
metadata:
5+
title: Knowledge check
6+
description: Check your understanding of IIS administration concepts with this knowledge check.
7+
ms.date: 04/03/2026
8+
author: Orin-Thomas
9+
ms.author: orthomas
10+
ms.topic: unit
11+
durationInMinutes: 1
12+
quiz:
13+
title: Knowledge check
14+
questions:
15+
- content: "You need to manage IIS on a Windows Server 2025 Server Core installation from your desktop computer. What must you configure on the server first?"
16+
choices:
17+
- content: "Enable Remote Desktop on the Server Core server"
18+
isCorrect: false
19+
explanation: "Remote Desktop provides general server access but isn't required for remote IIS management. The Web Management Service (WMSVC) provides dedicated IIS remote management over TCP port 8172 without needing a Remote Desktop session."
20+
- content: "Install and start the Web Management Service (WMSVC) on the server"
21+
isCorrect: true
22+
explanation: "WMSVC (installed via the IIS Management Service role service) enables remote IIS Manager connections over TCP port 8172. It's the standard mechanism for managing IIS on Server Core and doesn't require a local GUI or Remote Desktop access."
23+
- content: "Upgrade the server from Server Core to the full Desktop Experience installation"
24+
isCorrect: false
25+
explanation: "Upgrading to Desktop Experience is unnecessary. Server Core is a supported deployment option for IIS, and the Web Management Service (WMSVC) enables full remote IIS administration without a local GUI."
26+
- content: "Configure RPC over HTTP for IIS Manager"
27+
isCorrect: false
28+
explanation: "IIS Manager doesn't use RPC over HTTP for remote connections. Remote IIS management uses the Web Management Service (WMSVC), which communicates over HTTPS on TCP port 8172."
29+
- content: "You want to grant a developer named devuser the ability to manage only the MarketingSite in IIS, without granting them any Windows administrator rights or visibility into other sites. Which two features must you use together?"
30+
choices:
31+
- content: "IIS Manager Users and IIS Manager Permissions"
32+
isCorrect: true
33+
explanation: "IIS Manager Users are an IIS-only credential (not a Windows account). IIS Manager Permissions on the target site grants that credential access to that site only. The developer connects via WMSVC and sees only the delegated site—no Windows admin rights are required."
34+
- content: "Windows Authorization rules and NTFS permissions"
35+
isCorrect: false
36+
explanation: "Windows Authorization rules and NTFS permissions control file system access, not IIS Manager connectivity. They can't scope IIS Manager visibility to a single site or create IIS-only management credentials."
37+
- content: "Application Pool Identities and delegation"
38+
isCorrect: false
39+
explanation: "Application Pool Identities control the security context under which worker processes run. They don't provide a mechanism to grant a developer site-level management access through IIS Manager."
40+
- content: "WMSVC and Windows Authentication"
41+
isCorrect: false
42+
explanation: "While WMSVC is needed for remote connections, Windows Authentication alone would require the developer to have a Windows account with appropriate permissions—potentially granting broader access than intended. IIS Manager Users provide an IIS-only credential scoped to specific sites."
43+
- content: "You need to create a backup of IIS configuration before a major change. Which AppCmd command is correct?"
44+
choices:
45+
- content: "`appcmd create backup \"Pre-Change\"`"
46+
isCorrect: false
47+
explanation: "The `create` verb isn't a valid AppCmd command. The correct syntax uses the `add` verb: `appcmd add backup \"Pre-Change\"`."
48+
- content: "`appcmd add backup \"Pre-Change\"`"
49+
isCorrect: true
50+
explanation: "`appcmd add backup` creates a snapshot of the IIS configuration files (applicationHost.config, redirection.config, and administration.config) in the inetsrv\\backup directory. You can restore it later with `appcmd restore backup \"Pre-Change\"`."
51+
- content: "`appcmd export config /dest:\"Pre-Change\"`"
52+
isCorrect: false
53+
explanation: "The `export` verb with a `/dest` parameter isn't valid AppCmd syntax. Configuration backups are created with `appcmd add backup \"Pre-Change\"`."
54+
- content: "`appcmd save backup \"Pre-Change\"`"
55+
isCorrect: false
56+
explanation: "The `save` verb isn't a valid AppCmd command for creating backups. The correct syntax is `appcmd add backup \"Pre-Change\"`."
57+
- content: "In what scenario should you use `iisreset` rather than recycling individual application pools?"
58+
choices:
59+
- content: "Whenever a website returns a 500 error"
60+
isCorrect: false
61+
explanation: "A 500 error typically indicates an application-level problem. Recycling the specific application pool with `Restart-WebAppPool` is the appropriate lower-impact action. `iisreset` drops all active connections across every site on the server."
62+
- content: "As the first troubleshooting step for any IIS problem"
63+
isCorrect: false
64+
explanation: "`iisreset` stops and restarts all IIS services, dropping every active connection on the server. It should be a last resort, not a first step. Start with recycling the affected application pool or reviewing event logs."
65+
- content: "When IIS configuration files were modified outside IIS Manager, or when IIS services themselves are unresponsive"
66+
isCorrect: true
67+
explanation: "`iisreset` stops and restarts all IIS services, which is necessary when the IIS service layer itself is in an unexpected state or after out-of-band changes to configuration files. For most issues, recycling individual application pools with `Restart-WebAppPool` is the correct, lower-impact approach."
68+
- content: "Every time new web content is deployed to a site"
69+
isCorrect: false
70+
explanation: "Content deployments typically don't require restarting IIS services. If an application pool recycle is needed after deployment, use `Restart-WebAppPool` to target only the affected pool without disrupting other sites."
71+
- content: "What does the command `Get-ChildItem IIS:\\AppPools` return?"
72+
choices:
73+
- content: "A list of all active HTTP requests on the server"
74+
isCorrect: false
75+
explanation: "Active HTTP requests aren't exposed under IIS:\\AppPools. To list active requests, use `appcmd list requests` from the command line."
76+
- content: "A list of all application pools on the local IIS server"
77+
isCorrect: true
78+
explanation: "The IIS:\\ provider from the WebAdministration module exposes IIS as a navigable drive. `Get-ChildItem IIS:\\AppPools` lists all application pools, analogous to listing files with `Get-ChildItem C:\\`. Use `IIS:\\Sites` to list websites."
79+
- content: "The configuration properties of the Default App Pool"
80+
isCorrect: false
81+
explanation: "`Get-ChildItem` lists the children of a path, not the properties of a single item. To view properties of a specific application pool, use `Get-Item IIS:\\AppPools\\DefaultAppPool | Select-Object *`."
82+
- content: "A list of all websites on the local IIS server"
83+
isCorrect: false
84+
explanation: "Websites are listed under `IIS:\\Sites`, not `IIS:\\AppPools`. `Get-ChildItem IIS:\\AppPools` returns application pools. Use `Get-ChildItem IIS:\\Sites` to list websites."
85+
- content: "An IIS log entry shows an HTTP status of 503. What does this indicate and what is the most likely cause?"
86+
choices:
87+
- content: "A 404 Not Found error; the requested file is missing"
88+
isCorrect: false
89+
explanation: "HTTP 404 and HTTP 503 are different status codes. A 404 means the requested resource wasn't found. A 503 indicates that the server can't handle the request, typically because the application pool is stopped or its request queue is full."
90+
- content: "A 401 Unauthorized error; authentication failed"
91+
isCorrect: false
92+
explanation: "HTTP 401 and HTTP 503 are different status codes. A 401 means the client failed to authenticate. A 503 indicates that the service is unavailable, typically due to a stopped application pool or rapid-fail protection."
93+
- content: "Service Unavailable; the application pool is stopped or has exceeded its request queue limit"
94+
isCorrect: true
95+
explanation: "HTTP 503 means IIS can't route the request to a worker process—typically because the application pool is stopped, has entered rapid-fail protection, or its request queue is full. Check the application pool state in IIS Manager and review the System event log (source: WAS) for failure details."
96+
- content: "A network timeout; the client disconnected before the server responded"
97+
isCorrect: false
98+
explanation: "A client disconnect wouldn't produce a 503 status code in IIS logs. HTTP 503 Service Unavailable indicates a server-side issue where IIS can't route the request to a worker process."
99+
- content: "You want to list all currently executing HTTP requests on the server from the command line. Which AppCmd command is correct?"
100+
choices:
101+
- content: "`appcmd list site /state:Started`"
102+
isCorrect: false
103+
explanation: "This command lists sites that are in the Started state, not active HTTP requests. To list in-flight requests, use `appcmd list requests`."
104+
- content: "`appcmd list requests`"
105+
isCorrect: true
106+
explanation: "`appcmd list requests` displays all in-flight HTTP requests with the URL, client IP, elapsed time, and current pipeline stage. This is the primary command-line tool for diagnosing hung or slow requests in production."
107+
- content: "`appcmd list wp /state:Running`"
108+
isCorrect: false
109+
explanation: "This command lists running worker processes, not individual HTTP requests. Worker processes host application pools. To see the actual HTTP requests being processed, use `appcmd list requests`."
110+
- content: "`appcmd list requests /all`"
111+
isCorrect: false
112+
explanation: "The `/all` parameter isn't a valid option for `appcmd list requests`. The correct command is `appcmd list requests`, which lists all currently executing HTTP requests without additional flags."
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.devrel.manage-internet-information-services.summary
3+
title: Summary
4+
metadata:
5+
title: Summary
6+
description: Module summary
7+
ms.date: 04/03/2026
8+
author: Orin-Thomas
9+
ms.author: orthomas
10+
ms.topic: unit
11+
durationInMinutes: 1
12+
content: |
13+
[!include[](includes/6-summary.md)]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
As a Windows Server administrator, you need to confidently manage IIS day-to-day. This includes understanding how to connect to a headless Server Core installation, script bulk configuration changes, watch worker processes for signs of trouble, or run a quick health check before a deployment.
2+
3+
In this module you use IIS Manager both locally and remotely, automate repetitive tasks with PowerShell and AppCmd, and build a routine monitoring practice that keeps your IIS environment running reliably.
4+
5+
After completing this module, you'll understand how to:
6+
7+
- Navigate IIS Manager and use it to manage sites, application pools, and server configuration
8+
- Install and configure the Web Management Service (WMSVC) to enable remote IIS administration
9+
- Delegate limited IIS access to developers using IIS Manager Users and IIS Manager Permissions
10+
- Use the WebAdministration PowerShell module to create, configure, and manage IIS objects
11+
- Use AppCmd.exe for command-line administration and configuration backup/restore
12+
- Monitor worker processes and active requests using IIS Manager and PowerShell
13+
- Configure IIS logging and analyze log data to identify errors and traffic patterns
14+
- Perform routine administrative tasks including application pool lifecycle management and IISReset

0 commit comments

Comments
 (0)