|
| 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." |
0 commit comments