Gutcheck.psd1

@{
    RootModule        = 'Gutcheck.psm1'
    ModuleVersion     = '0.14.0'
    GUID              = 'ce76f1fb-5362-4093-83f3-e8eb17deae0e'
    Author            = 'MERLIN'
    CompanyName       = 'MERLIN'
    Copyright         = '(c) 2026 MERLIN. Licensed under the MIT License.'
    Description       = '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.'

    # Target Machines without PowerShell 7 must stay supportable.
    PowerShellVersion = '5.1'
    CompatiblePSEditions = @('Desktop', 'Core')

    FunctionsToExport = @('Invoke-Gutcheck')
    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @('gutcheck')

    PrivateData = @{
        PSData = @{
            Tags         = @(
                'Windows', 'Diagnostics', 'Performance', 'Support', 'Troubleshooting',
                'Helpdesk', 'Hardware', 'Reporting'
            )
            ProjectUri   = 'https://github.com/kort3x/gutcheck'
            LicenseUri   = 'https://github.com/kort3x/gutcheck/blob/main/LICENSE'
            ReleaseNotes = @'
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.
0.12.1 - The whole Run in cards.
- The search for a newer version and the sign-in for the Check Definitions are cards
  too, under the banner. The QR code stands in its card and is gone once signed in.
- A card is as wide as the window, so that what a Check found can be read, and two
  thirds of its height at most.
- A Run of many Checks no longer flickers, and no progress bar of PowerShell's flashes
  over it. The result has a bar while the Report is written.
- A Run prints nothing after the path to its Report. -PassThru hands back the Run.
- The banner is a small face where the window can draw it, and it blinks.
0.12.0 - A Run you can watch.
- In PowerShell 7 a Run shows what it examines, the Checks and the result as three cards.
  Each Check is a row with its progress and the worst of what it found; a finished part
  folds to one line, and the result stays open with every FAIL and WARN.
- The applications are chosen from a list to move in, with everything detected selected.
  A name that is on no list can be typed and is checked as a process.
- On Windows PowerShell 5.1 a Run writes what it always wrote, a line for every Finding.
  Its questions are asked as a numbered list and a typed line.
- The questions about another user's session are a choice of three and a yes or no,
  where they were letters to type.
- console.log has every line as one line where the window has colour.
0.11.3 - What a terminal server showed.
 
- On Windows Server 2019 every HTTPS endpoint failed with an error about
  "SslProtocolType": that was Gutcheck's way of asking and no fault of the server asked.
  It is asked again naming TLS 1.2.
- Each User Profile gets its share of the measuring time, three minutes in all: on a
  server with 32 profiles one had been measured.
- A Windows Server is said to keep no list of antivirus programs and to record no boot
  duration, where the Report said "nicht verfuegbar".
- A path handed in single quotes ends at its quote, and an error number Windows has no
  sentence for is said to have none.
 
0.11.2 - Evidence a second level can read.
 
- Every table of the evidence sorts by any column and filters by a word, and has a help
  behind a "?" that says what it shows, where it comes from and how to read it.
- The adapters' power saving and SMB client, the proxy and the wireless interface are
  tables that say what each value does, where they were lines as they came.
- A process that hosts services names the services in it, in its Finding and in a table.
- The part with admin rights runs without a window of its own; the Run's window says
  which Check it is at. -ShowElevatedWindow shows it as before.
- An Outlook profile with a mailbox on the own Exchange and one in Exchange Online has
  the sign-in looked at for both.
 
0.11.1 - Whose it is, and where to read on.
 
- For Outlook, the Servers of the mailboxes that are set up are measured: the
  Customer's own Exchange for a mailbox that is on it, Microsoft 365 for one in Exchange
  Online. Each measurement says whose Server it is.
- Sign-in errors at Microsoft 365 are told apart by program: Outlook and Office in one
  Finding, OneDrive, Teams, the browser and the others in a Finding of their own.
- A Finding that a text names by its title is a link to it.
- Where the log holds no Group Policy run at startup or at sign-in, the Report says why.
 
0.11 - The User, and what changed.
 
- The Report says who the User is in terms of the machine, under a new heading
  "Benutzer": since when they are signed in and what their Session holds; what kind of
  User Profile they have, how large its folders are and how long it takes to load;
  where Desktop and Documents lie; their proxy, default printer, autostart, monitors
  and Offline Files.
- Every Session and every User Profile on the machine is listed, with a warning for a
  disconnected Session that holds memory and a count of User Profiles nobody has used
  for half a year. Of other Users only account, state, times, memory, kind and size.
- A timeline of what Windows logged as changed in the last 30 days - programs, updates,
  drivers, services, restarts - with the account. A crash Finding says so where the
  crashes began shortly after such a Change.
- Gutcheck reads state and logged Changes and never what a User did: no file names, no
  usage, no content.
- A Run that is not in the User's Session says so and leaves the User's part unread.
 
0.10 - Every running program.
 
- A new Check looks at every running program, not only at the applications that have a
  Check of their own: a table of all of them with memory, handles, GDI and USER objects,
  and a Finding for one near the limit of 10,000 GDI or USER objects or holding
  unusually many handles. The programs of other accounts are read with admin rights;
  what stays unread is said to be unread.
- A status of Windows or a WinHTTP error Gutcheck has no wording for is said as Windows
  says it; each print service error has its own meaning; four sign-in errors of
  Microsoft Entra ID are worded as Microsoft documents them.
- Where a program was found is one Finding per application, and a shortcut to a program
  on a share is information, not a warning.
 
Versions 0.1 to 0.9.1: https://github.com/kort3x/gutcheck/blob/main/docs/release-notes-earlier.md
'@

        }
    }
}