PowerShell scripts for everyday IT helpdesk work on Windows: health checks, bulk software installs, exam-room readiness checks and disk cleanup. Built from real tasks I did while supporting staff workstations and computer-based exam rooms.
| Script | What it does | Needs admin |
|---|---|---|
Get-SystemHealth.ps1 |
OS, uptime, CPU, RAM, every disk, pending reboot, antivirus, network and internet, with OK / WARN / FAIL flags. Exports CSV or HTML. | No |
Install-Software.ps1 |
Installs a standard app set from a JSON list with winget, skips what is already installed and writes a log. | Some apps |
Test-ExamRoom.ps1 |
PASS/FAIL checklist for every PC in a test room: disk, RAM, required apps, screen resolution, exam server reachable, clock sync, pending reboot. | No |
Clear-DiskSpace.ps1 |
Clears temp files, update cache, error reports, thumbnail cache and the Recycle Bin, then reports space freed. | For system folders |
All scripts work on the built-in Windows PowerShell 5.1. Nothing extra to install.
Get-SystemHealth and Test-ExamRoom can also check remote computers over PowerShell Remoting.
git clone https://github.com/dlam17/it-helpdesk-toolkit.git
cd it-helpdesk-toolkit
# Allow local scripts for this session only
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\scripts\Get-SystemHealth.ps1.\scripts\Get-SystemHealth.ps1 # this PC
.\scripts\Get-SystemHealth.ps1 -ReportPath .\health.html # HTML report for a ticket
.\scripts\Get-SystemHealth.ps1 -ComputerName PC01, PC02 -DiskWarnPercent 20Sample output:
Computer Check Status Detail
-------- ----- ------ ------
WS-042 OS OK Microsoft Windows 11 Pro (build 26200)
WS-042 Uptime OK 4d 21h since last reboot
WS-042 Memory OK 44% used (17.7 GB free of 31.7 GB)
WS-042 Disk C: OK 69% free (206.1 GB of 299.1 GB)
WS-042 Pending reboot OK No restart pending
WS-042 Antivirus OK Kaspersky active, signatures up to date
WS-042 Internet OK Reachable
Summary -> OK: 13
Edit config/apps.json with the apps your office uses (find IDs with winget search <name>), then:
.\scripts\Install-Software.ps1 -WhatIf # preview
.\scripts\Install-Software.ps1 # installPut the room's computer names in a text file (see examples/room-a.txt) and set the requirements in config/exam-room.json:
{
"minFreeDiskGB": 10,
"minRamGB": 4,
"minScreenWidth": 1280,
"minScreenHeight": 720,
"requiredApps": ["Google Chrome*"],
"examServerUrls": ["https://www.microsoft.com"],
"timeServer": "time.windows.com",
"maxClockOffsetSeconds": 5
}.\scripts\Test-ExamRoom.ps1 -ComputerListPath .\examples\room-a.txt -ReportPath .\room-a.csvComputer Check Result Detail
-------- ----- ------ ------
PC01 Free disk PASS 48.2 GB free on C: (need 10)
PC01 App: Google Chrome* PASS Google Chrome
PC01 Server: www.microsoft.com PASS Port 443 open
PC01 Clock sync PASS Offset 0.55s from time.windows.com
PC02 Ping FAIL No reply
1 of 2 computer(s) ready.
NOT READY PC02: Ping
.\scripts\Clear-DiskSpace.ps1 -WhatIf # see what would be removed
.\scripts\Clear-DiskSpace.ps1 -OlderThanDays 3 # run it (as Administrator for system folders)Remote checks use PowerShell Remoting. On a domain network it is usually already enabled. Otherwise run this once on each target as Administrator:
Enable-PSRemoting -Forceit-helpdesk-toolkit/
├── scripts/ PowerShell scripts
├── config/ apps.json (software list), exam-room.json (room requirements)
└── examples/ sample computer list
- Active Directory user onboarding / offboarding script
- Printer install and queue reset
- Scheduled health report emailed daily
- Pester tests