What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
The practical answer: run a recurring HTTP check, record the UTC time, status code, response time and error, then apply a failure policy that logs or alerts after the conditions you define. On Windows, the simplest dependable setup is a PowerShell script launched by Task Scheduler. IIS administrators can add local site-state and resource telemetry; enterprises can use System Center Operations Manager (SCOM), while Azure Monitor Application Insights can test availability from multiple external locations.
Choose the monitoring method that matches the failure you need to see
A monitor answers a specific question. “Is the server process running?” is different from “Can a customer in another country load the homepage?” Select the narrowest method that proves the outcome you care about.
| Situation | Method | Measures | Trade-off |
|---|---|---|---|
| One URL from a Windows computer | PowerShell plus Task Scheduler | HTTP status, elapsed time and optional text | Simple and inexpensive, but depends on the Windows host, network path and script |
| Your own IIS site | IIS monitoring API and Get-WebsiteState |
State, uptime, requests, CPU, memory, disk and cache data | Excellent local detail, but it does not prove public-internet availability |
| Several URLs or authenticated workflows | SCOM Web Application Availability Monitoring | HTTP, DNS, TCP, time-to-first-byte, time-to-last-byte, response, content-size and download metrics | Rich policies and dashboards require more administration |
| Users in different regions | Azure Monitor Application Insights availability tests | Recurring availability and responsiveness from outside locations | Less local maintenance, with cloud account and service configuration |
Build a PowerShell URL check
The script below writes one CSV-style line per run, checks an expected status, optionally verifies text, and exits with code 1 when the policy fails. A nonzero exit code gives Task Scheduler, SCOM or another wrapper something unambiguous to act on.
PowerShell script
param(
[string]$Url = "https://example.com/",
[string]$LogPath = "C:WebsiteMonitorwebsite-monitor.log",
[int]$TimeoutSec = 30,
[int]$ExpectedStatus = 200,
[string]$ExpectedText = ""
)
$ErrorActionPreference = "Stop"
$started = [DateTime]::UtcNow
$directory = Split-Path -Parent $LogPath
New-Item -ItemType Directory -Path $directory -Force | Out-Null
try {
$request = Invoke-WebRequest -Uri $Url -TimeoutSec $TimeoutSec -UseBasicParsing
$elapsedMs = ([DateTime]::UtcNow - $started).TotalMilliseconds
$textOK = [string]::IsNullOrEmpty($ExpectedText) -or ($request.Content -like "*$ExpectedText*")
$ok = ($request.StatusCode -eq $ExpectedStatus) -and $textOK
$line = "{0}`tstatus={1}`ttime_ms={2:N0}`tcontent_ok={3}`turl={4}" -f $started.ToString("o"), $request.StatusCode, $elapsedMs, $textOK, $Url
Add-Content -Path $LogPath -Value $line
if (-not $ok) { exit 1 }
exit 0
}
catch {
$elapsedMs = ([DateTime]::UtcNow - $started).TotalMilliseconds
$message = $_.Exception.Message -replace "[`r`n`t]", " "
Add-Content -Path $LogPath -Value ("{0}`tstatus=ERROR`ttime_ms={1:N0}`terror={2}`turl={3}" -f $started.ToString("o"), $elapsedMs, $message, $Url)
exit 1
}
Save it as C:WebsiteMonitorCheck-Website.ps1. Replace the URL and, if useful, set -ExpectedText "Checkout". A 200 response alone can still be an error page, maintenance page or application-level failure, so text checks should target a stable, distinctive phrase rather than a frequently changing timestamp.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →#1 Best Overall
- 14" diagonal, 1366x768 resolution, HD BrightView LED, Glossy NON-TOUCH Display
PowerShell 5.1 automation warning
Microsoft Support documents a security-confirmation change for Windows PowerShell 5.1 after updates released on December 9, 2025. Invoke-WebRequest may prompt before processing web content unless special parameters are used, because earlier DOM processing could execute scripts. Test the exact command in the PowerShell version and account used by the scheduled task. The example uses -UseBasicParsing; do not assume that an interactive test and unattended execution behave identically.
Schedule the check with Task Scheduler
- Create the directory and test the script manually:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:WebsiteMonitorCheck-Website.ps1. Confirm the log and inspect$LASTEXITCODEor the process exit code. - Open Task Scheduler and choose Create Task, not the less configurable basic wizard.
- On General, give the task a name such as Website monitor. Select Run whether user is logged on or not; use a service account with only the file and network permissions required. Store credentials securely.
- On Triggers, choose New, select On a schedule, set the start time and recurrence, and enable Repeat task every for your interval. Task Scheduler also supports boot, logon and system-event triggers.
- On Actions, choose Start a program. Set Program/script to
powershell.exeand arguments to-NoProfile -ExecutionPolicy Bypass -File "C:WebsiteMonitorCheck-Website.ps1" -Url "https://example.com/". Set Start in toC:WebsiteMonitor. - On Conditions, decide whether the task may start on battery power and enable Start only if the following network connection is available when appropriate. On Settings, set a task time limit, enable Run task as soon as possible after a scheduled start is missed, and prevent overlapping instances.
- Run the task on demand, then open History. For deeper diagnosis, enable and review Applications and Services Logs > Microsoft > Windows > TaskScheduler > Operational.
Command-line creation with schtasks.exe
schtasks.exe can create and manage recurring tasks. A daily task with a ten-minute repetition can be created from an elevated command prompt (quote paths carefully):
schtasks /Create /TN "Website monitor" /SC DAILY /ST 00:00 /MO 1 /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:WebsiteMonitorCheck-Website.ps1 -Url https://example.com/" /RU SYSTEM
Verify the resulting trigger, account and action with schtasks /Query /TN "Website monitor" /V /FO LIST. For production, review the generated task in the graphical console because repetition and timeout settings are easy to misread in a long command.
Define a useful failure and alert policy
Do not page someone for every transient packet loss. Log each attempt, but alert when the event is meaningful to the service.
- Transport failure: DNS failure, connection refusal, TLS error or timeout.
- HTTP failure: an unexpected status, commonly 400 or greater for a web-availability policy.
- Content failure: the status is acceptable but a required phrase, element or health response is missing.
- Performance failure: response time exceeds a documented limit for several consecutive checks.
- Recovery: send a separate recovery notification when successful checks resume.
A practical local policy is to record one failure, alert after two or three consecutive failures, and clear the alert after two successful checks. Choose the count and interval from the business impact; a five-minute check detects problems differently from a one-minute check. Also create a second monitor for the monitor itself: alert when the scheduled task has not run, the log has stopped growing, credentials expire, or the Windows host is offline.
Rank #2
- 256 GB SSD of storage.
- Multitasking is easy with 16GB of RAM
- Equipped with a blazing fast Core i5 2.00 GHz processor.
Monitor an IIS website locally
For an IIS-hosted site, local telemetry explains why a check may fail. IIS Administration’s monitoring API exposes performance data for an individual website, including uptime, active connections, request counts, CPU, memory, disk and cache fields. PowerShell’s Get-WebsiteState reports whether a site is Started and can quickly distinguish a stopped site from an application or network problem.
Import-Module WebAdministration
Get-WebsiteState -Name "Default Web Site"
Get-Website -Name "Default Web Site" | Format-List *
Use this with the external HTTP check, not instead of it. A site can be Started while its public DNS, firewall, certificate, load balancer or application dependency is broken. Conversely, an external failure may be caused by the path between the checker and the server while IIS remains healthy.
Enterprise and multi-location monitoring
System Center Operations Manager
SCOM’s Web Application Availability Monitoring template accepts one or more URLs, configurable frequency and timeout, evaluates HTTP status, and collects DNS, TCP, time-to-first-byte, time-to-last-byte, response, content-size and download metrics. Its documented example uses a 10-minute frequency, a 45-second timeout and alerts at HTTP 400 or greater; treat those as examples to tune, not universal defaults. Configure consecutive-failure and summary-alert behavior so a single transient event does not create unnecessary escalation.
Azure Monitor Application Insights
Application Insights availability tests run recurring web tests from points around the world and alert when a website is detected as unavailable. This is the better fit when the requirement is an outside-in view or geographic coverage that one Windows machine cannot provide. Combine it with local IIS data when you also need server-level diagnosis.
Performance, reliability and cost decisions
- Use UTC timestamps so daylight-saving changes do not create false gaps.
- Keep logs bounded with daily rotation or an archival policy; never let an unattended task fill the system disk.
- Set a timeout shorter than the check interval and prevent overlapping runs.
- Use a lightweight health endpoint for application checks, while retaining a real page check for user-facing availability.
- For authenticated pages, protect credentials in Windows Credential Manager or a secret store rather than putting them in task arguments or logs.
- One Windows location proves only that this host and its network path reached the URL. Multi-location synthetic tests are needed to identify regional failures.
Troubleshooting common failures
The task shows success but no log entry
Check the task’s Start in directory, absolute log path, account permissions and TaskScheduler Operational log. Run the exact action command under the scheduled account.
Rank #3
- FULL HD IPS DISPLAY - Enjoy vibrant, crystal-clear images with 178-degree wide-viewing angles
- AMD RYZEN 3 30 PROCESSOR - Everyday performance you can count on; Multitask, stream, game casually, and edit photos smoothly with responsive power and vibrant HDR visuals
- ENJOY UP TO 14 HOURS AND 15 MINUTES OF BATTERY LIFE - HP Fast Charge restores battery from 0 to 50% in approximately 45 minutes
- AMD RADEON 610M GRAPHICS - Experience smooth entertainment; Built for streaming and multitasking, enjoy realistic visuals and efficient performance for work and play
- STORAGE AND MEMORY - 512 GB PCIe NVMe M.2 SSD offers fast speed and efficient storage; and 8 GB LPDDR5 RAM memory boosts performance with higher bandwidth
Interactive PowerShell works, scheduled execution fails
Compare PowerShell version, profile loading, proxy settings, environment variables, certificate stores and network credentials. Use -NoProfile, absolute paths and the documented PowerShell 5.1 web-request behavior as a starting point.
The URL returns 200 but the site is broken
Add an expected-text assertion or a purpose-built health endpoint. For a browser-dependent workflow, use a transaction monitor that can authenticate, click and validate the resulting page rather than a bare GET.
Free tools Windows power users keep installed
One-click scans. No signup required.
Frequent timeout alerts
Separate DNS, TCP-connect, TLS and server-response timing where possible. Compare local IIS resource data with an outside-in test before increasing the timeout; a longer timeout can hide a slow outage.
IIS says Started but customers cannot connect
Check DNS, certificate validity, bindings, firewall and load-balancer health, then test from a different network. Local state is not public availability.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup
If you need screenshots as part of a visual check, ScreenshotNeo returns a PNG, JPEG, WebP or PDF from one request. It accepts cookie and consent banners, removes more than 60 known consent platforms plus newsletter popups and chat widgets, and bills only clean shots: bot checks, CAPTCHAs, blank pages, timeouts, failed loads and cache hits cost nothing. Responses identify the result with X-Page-Verdict and X-Billed headers. Its MCP server lets Claude, Cursor and other MCP clients call take_screenshot, get_page_info and capture_pdf.
See the ScreenshotNeo API documentation for all options. A basic Windows-friendly call is:
Recommended Free Tools
Rank #4
- 14” Diagonal HD BrightView WLED-Backlit (1366 x 768), Intel Graphics,
- Intel Celeron Dual-Core Processor Up to 2.60GHz, 4GB RAM, 64GB SSD
- 3x USB Type A,1x SD Card Reader, 1x Headphone/Microphone
- 802.11a/b/g/n/ac (2x2) Wi-Fi and Bluetooth, HP Webcam with Integrated Digital Microphone
- Windows 11 OS, Dale Blue
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
There is a free allowance of 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account to try it.
FAQ
Can Task Scheduler alert me by itself?
It can record task failures and launch another action, such as a script that sends mail or posts to an incident system. Configure that action explicitly; a nonzero script exit code alone is not a delivered notification.
How often should a Windows monitor run?
Set the interval from your detection objective, timeout and alert tolerance. A shorter interval detects sooner but creates more requests and log entries; use consecutive failures to control noise.
Is IIS monitoring enough for uptime?
No. IIS telemetry describes the server and site locally. It cannot verify DNS, routing, firewall behavior or availability from every customer location.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

