Gutcheck
0.17.1
Gutcheck - an honest look inside a slow or unstable Windows PC. Performance and stability diagnostics for Windows clients, driven by data-defined Checks. A technician runs one command at a customer site and reads the report on the spot.
Minimum PowerShell version
5.1
Installation Options
Owners
Copyright
(c) 2026 MERLIN. Licensed under the MIT License.
Package Details
Author(s)
- MERLIN
Tags
Windows Diagnostics Performance Support Troubleshooting Helpdesk Hardware Reporting
Functions
PSEditions
Dependencies
This module has no dependencies.
Release Notes
0.17.1 - Titles that say what they count.
- -Skip is kept for a Check that needs admin rights: "-Skip 'CPU stress test'" ran the
stress test all the same, and the admin prompt came for Checks nobody wanted.
- The two Findings about lost and failed connections to Servers are named for what they
read: "Dateifreigaben: ...". "None" there never said anything about Remote Desktop.
- Remote Desktop warns from ten dropped sessions to one server, and from twenty to all
of them together; failed connections from ten together.
- What Windows logs about the domain and the time in the first minutes after a start,
before the network is up, is listed and not counted: no warning for being switched on.
- Each domain controller is asked for the mapped paths themselves, and one that takes
seconds to answer for a path it has is a Finding.
- "Freigabe am Server nicht gefunden" says where the session came back.
- "Langsamste Richtlinienerweiterungen" says how many runs were slow, when last, and
whether somebody waited. One long run in the background is a note, no failure.
- "Fehlgeschlagene Richtlinienerweiterungen" showed a server where the meaning of the
error belongs. It says the meaning, when last, and through which domain controllers.
- New: which Group Policy objects were applied to the computer and to the User, which
were not and why, and how each component of policy ended - two Findings and two tables,
from Windows' own result of policy. An object at one version in the directory and at
another in SYSVOL warns.
0.17.0 - The domain, and each of its controllers.
- New Check "Domain": the domain controllers DNS names, each measured by itself -
LDAP, Kerberos, SMB, its clock, and whether it has SYSVOL and the folder the drives
mapped by the domain's name go through. A share one controller has and another has
not is a Finding: the drive that is slow on some days. Needs no admin rights.
- The Report has an area "Domäne". What the domain logged and the age of the computer
account's password stand there, no longer under the network.
- The list of sign-ins says which controller the domain's name led to at each, and the
sign-in Finding says so where the slow ones went to one and the quick ones to another.
- "Freigabe am Server nicht gefunden" says which address answered, and how often.
- What an adapter's driver logs while the machine starts is named as that in the network
timeline, and "Adapter: Verbindung im Betrieb getrennt" counts only a link that went
down while the machine ran. An adapter with power saving on warns where it did.
- What a Finding means is a list, a statement to a line, and a copied Finding is laid
out the same way. The Finding about the domain's log says only what applies.
- A sign-in that is slow on some days and quick on others warns: two slow ones among
the last ten are enough, and the Finding shows the phases of a slow one. Two quick
sign-ins no longer make a problem disappear.
- "Freigabe am Server nicht gefunden" is a Finding of its own. A server that answers
"no such share" was counted as a lost connection and failed the machine; it is what a
drive mapped by the domain's name logs when not every server behind it has the share.
- A time in a table is written as German writes it: 12.10.2026, never 10/12/2026.
- The status of a secure channel that did not come about has its meaning beside it.
0.16.0 - What takes time before the desktop.
- "Anmeldung: Zeit bis zum Desktop": how long the User's sign-ins take, and where the
time of the last one went - loading the profile, Group Policy, the other parts of
Windows, the start of the shell and its own tasks. Needs no admin rights.
- "Anmeldung: Autostart-Programme": Windows starts them one after the other, about
thirty seconds apart. The Finding says when the last one starts; with twelve, that is
six minutes after the sign-in.
- Two tables: every sign-in with its phases, and the last one step by step.
- The start duration says what the last start was spent on: the way to the desktop,
the settling after it, and the time the machine stood at the sign-in screen.
- Ping loss measured while the processor was busy is graded a step milder, and the
Finding says how busy the machine was and to measure again: a machine at full load
loses pings on a line that is in order.
- Loss to the gateway is worded by what the machine hangs on. A desktop at a cable is no
longer told about its Wi-Fi.
0.15.1 - A crash minutes after the drop.
- A program on a share is held against a lost connection up to 30 minutes before its
crash, no longer 10. The Finding says how long after the drop the crashes came and
for how many the connection was already back, and what that means.
- "Wechsel zwischen Kabel und WLAN": a cable connection that keeps failing over to
Wi-Fi and back is a Finding, and the Lead about the connection then says so.
- Warnings and errors of the adapters' own drivers stand in the network timeline, for
any maker, with the adapter named.
- Disk errors are three Findings under "Speicher": built-in drives, external drives
(USB), and what names no drive. An unplugged stick no longer colours the answer about
the SSD. A table lists every error with its drive.
- DNS in one place: each DNS server asked by itself, and every event about DNS.
- "Kein Domänencontroller erreichbar" with an internal error is the secure channel that
comes about at the second attempt (Windows 11 24H2 and later against domain
controllers before Server 2025): shown, explained, and no longer a warning. Beside it
the age of the computer account's password, which warns where it is no longer renewed.
0.15.0 - More than file shares.
- Remote Desktop: connections from this machine that never came about or were cut by
the network, per server ("2 of 9"), each reason with the sentence Windows shows for
it, and a server whose one name led to several addresses. Every connection of every
account is listed with its time and length, to read the failures against.
- What Windows logged of other protocols failing, one Finding each: sign-in to the
domain (no domain controller, broken trust, Kerberos), DNS time-outs, time
synchronisation, DHCP, wired 802.1X, TLS, Windows' own "no internet", and Windows'
own VPN. A code always has its meaning beside it.
- The clock is measured against its time source: a warning from one minute, a failure
from five, where the domain refuses sign-ins.
- What Windows says of the internet right now, and whether its own probe is off.
- Web folders (WebDAV): where a drive is one, the state of the service, the largest
file it takes and automatic proxy detection.
- Every name DNS did not answer for is named, and Windows' message is kept whole.
- "Fehlgeschlagene Verbindungen zu Servern" no longer says to remove what points at a
server that exists and was only unreachable for a while.
0.14.1 - The system's processes, really read.
- A Run with admin rights still said of the service processes that their modules were
not readable for lack of rights. The admin part now switches on the right to open any
process while it reads them, and a reading that found nothing on a share counts as
one. What is refused then is said as what it is: protected by Windows.
0.14.0 - What two Runs left open.
- The processes of the system, which a Run may not open in the user's session, are read
with admin rights for what they depend on. "Netzabhängigkeiten: nicht untersucht" no
longer says "only with admin rights" of a Run that had them.
- A limited processor is said to be limited by what: the power plan's maximum, Windows'
thermal throttle with the temperature, or the firmware. A table shows what was read.
- "Keine in 30 Tagen" for network disruptions says since when it can say so, where a log
does not reach back the whole period, and names the log.
- No Hint sends the reader to events.csv: print errors by printer, an application's
service crashes and Windows' warnings of low memory are tables of the Report.
- What Windows logs of a failed print names the document and whose it was. That text is
no longer kept, and the name of a waiting print job is no longer read.
- A Finding graded on a number of events says so: "Ereignisse: 120 in 30 Tagen".
- The newest 200 network disruptions are listed. The Servers of a connection Finding
are a list, with how many more there are, and both say that only SMB is counted.
0.13.0 - What belongs together, and what stays behind.
- The folder the admin part hands its readings over in could stay behind after a Run,
readable by every user of the PC. It is the Run's alone now and is deleted; where it
still stays, the Finding "Administrator-Teil" warns and names it.
- Outlook: a mailbox on the own Exchange beside an account at Microsoft 365 warns only
where Windows logged a program asking for an account it does not have.
- The applications are chosen from a list in columns, as many as the window is wide for.
Ctrl+N selects none. Left and Right go to the column beside.
- A Check's row is named without "App:", and a long name no longer pushes its row out of
line. The admin part's bar moves by the Checks it has finished, the result's bar while
the Report is written.
- A crashing program's Hints name what this machine is connected by: cable and switch
port, or the Wi-Fi. What a .NET exception type means is said apart from what to do.
- Hardware errors are counted by component. Only those of the memory support the
"Verdacht" for memory; an adapter whose power saving is on supports the one for the
connection, beside a link that dropped.
- A Finding that is not in order links to the one that looked for the same and found
nothing: disk errors to a drive that reports itself healthy.
- A Run in another account's session says so once, also for Outlook's sign-in, and
notices it without admin rights too.
Versions 0.1 to 0.12.1: https://github.com/kort3x/gutcheck/blob/main/docs/release-notes-earlier.md
FileList
- Gutcheck.nuspec
- Definitions\checks.json
- Gutcheck.psd1
- Gutcheck.psm1
- Invoke-GutcheckElevated.ps1
- Private\Account.ps1
- Private\AppSelection.ps1
- Private\Autoupdate.ps1
- Private\Code.ps1
- Private\Console.ps1
- Private\Data.ps1
- Private\Definition.ps1
- Private\Elevation.ps1
- Private\Finding.ps1
- Private\KeepSignIn.ps1
- Private\Kind.ps1
- Private\Kinds\App.ps1
- Private\Kinds\AppConnection.ps1
- Private\Kinds\AppLog.ps1
- Private\Kinds\AppRuntime.ps1
- Private\Kinds\Autodiscover.ps1
- Private\Kinds\Battery.ps1
- Private\Kinds\BootPerformance.ps1
- Private\Kinds\Change.ps1
- Private\Kinds\Cpu.ps1
- Private\Kinds\CrashDump.ps1
- Private\Kinds\DiskHealth.ps1
- Private\Kinds\DiskTest.ps1
- Private\Kinds\Domain.ps1
- Private\Kinds\DotNet.ps1
- Private\Kinds\FolderSize.ps1
- Private\Kinds\GroupPolicy.ps1
- Private\Kinds\HttpsEndpoint.ps1
- Private\Kinds\ImageIntegrity.ps1
- Private\Kinds\Logon.ps1
- Private\Kinds\Memory.ps1
- Private\Kinds\Network.ps1
- Private\Kinds\NetworkDependency.ps1
- Private\Kinds\NetworkDependencyElevated.ps1
- Private\Kinds\NetworkDisruption.ps1
- Private\Kinds\NetworkProtocol.ps1
- Private\Kinds\Odbc.ps1
- Private\Kinds\OfficeAddins.ps1
- Private\Kinds\OutlookAuth.ps1
- Private\Kinds\OutlookData.ps1
- Private\Kinds\Power.ps1
- Private\Kinds\Printing.ps1
- Private\Kinds\Program.ps1
- Private\Kinds\ProgramElevated.ps1
- Private\Kinds\RemoteDesktop.ps1
- Private\Kinds\Security.ps1
- Private\Kinds\Server.ps1
- Private\Kinds\Service.ps1
- Private\Kinds\Session.ps1
- Private\Kinds\SessionElevated.ps1
- Private\Kinds\Stability.ps1
- Private\Kinds\Startup.ps1
- Private\Kinds\Storage.ps1
- Private\Kinds\Stress.ps1
- Private\Kinds\System.ps1
- Private\Kinds\Temperature.ps1
- Private\Kinds\Updates.ps1
- Private\Kinds\UserProfile.ps1
- Private\Kinds\UserProfileElevated.ps1
- Private\Kinds\UserProfileOther.ps1
- Private\Kinds\UserSetting.ps1
- Private\Kinds\WebFolder.ps1
- Private\Lead.ps1
- Private\Parameter.ps1
- Private\Probe.ps1
- Private\Progress.ps1
- Private\PublishedDefinitions.ps1
- Private\QrCode.ps1
- Private\Reading.ps1
- Private\Report.ps1
- Private\Sampling.ps1
- Private\Section.ps1
- Private\Signal.ps1
- Private\Situation.ps1
- Private\Text.ps1
- Private\TokenCache.ps1
- Public\Invoke-Gutcheck.ps1
- Vendor\Lantern.ps1
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 0.28.0 | 6 | 10/15/2026 |
| 0.27.0 | 7 | 10/15/2026 |
| 0.26.0 | 7 | 10/14/2026 |
| 0.25.0 | 7 | 10/14/2026 |
| 0.24.1 | 3 | 10/14/2026 |
| 0.24.0 | 10 | 10/14/2026 |
| 0.23.0 | 7 | 10/13/2026 |
| 0.22.0 | 6 | 10/13/2026 |
| 0.21.0 | 5 | 10/13/2026 |
| 0.20.0 | 7 | 10/13/2026 |
| 0.19.1 | 7 | 10/12/2026 |
| 0.19.0 | 4 | 10/12/2026 |
| 0.18.1 | 4 | 10/12/2026 |
| 0.18.0 | 5 | 10/12/2026 |
| 0.17.1 (current version) | 3 | 10/12/2026 |
| 0.17.0 | 6 | 10/12/2026 |
| 0.16.0 | 7 | 10/12/2026 |
| 0.15.1 | 16 | 10/12/2026 |
| 0.15.0 | 6 | 10/12/2026 |
| 0.14.1 | 7 | 10/11/2026 |
| 0.14.0 | 7 | 10/11/2026 |
| 0.13.0 | 7 | 10/11/2026 |
| 0.12.1 | 8 | 10/11/2026 |
| 0.12.0 | 5 | 10/11/2026 |
| 0.11.3 | 6 | 10/11/2026 |
| 0.11.2 | 8 | 10/10/2026 |
| 0.11.1 | 8 | 10/10/2026 |
| 0.11 | 5 | 10/10/2026 |
| 0.10 | 5 | 10/10/2026 |
| 0.9.1 | 10 | 10/10/2026 |
| 0.9 | 8 | 10/10/2026 |
| 0.8.3 | 5 | 10/9/2026 |
| 0.8.2 | 4 | 10/9/2026 |
| 0.8.1 | 3 | 10/9/2026 |
| 0.8 | 3 | 10/9/2026 |
| 0.7.2 | 4 | 10/9/2026 |
| 0.7.1 | 6 | 10/9/2026 |
| 0.6.2 | 7 | 10/8/2026 |
| 0.6.1 | 6 | 10/8/2026 |
| 0.6 | 4 | 10/8/2026 |
| 0.5.2 | 6 | 10/7/2026 |
| 0.5.1 | 8 | 10/7/2026 |
| 0.5 | 5 | 10/7/2026 |
| 0.4 | 19 | 9/25/2026 |
| 0.3 | 7 | 9/25/2026 |
| 0.2 | 7 | 9/24/2026 |