Gutcheck.psd1

@{
    RootModule        = 'Gutcheck.psm1'
    ModuleVersion     = '0.4'
    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.4 - Progress while a Check waits.
 
- A Run shows a bar for the Run - which Check, of how many - and one beneath it while a
  Check waits: sampling, pings and connections, the disk write test, the stress test and
  the admin part. A Run no longer looks hung.
- The banner says "Trust your gut. Check everything."
 
0.3 - Outlook connectivity.
 
- Outlook connectivity, for Microsoft 365 and on-premises Exchange, without anybody's
  password:
  - Autodiscover: per mail domain, whether its DNS and endpoints answer the way Outlook
    needs, whether the mailbox is in Exchange Online, registry overrides that bend the
    lookup, and an Active Directory pointer still aiming on-premises after a migration.
  - HttpsEndpoint: whether an HTTPS service is reachable end to end - not blocked, not
    held by a proxy, not intercepted - with a valid certificate. Ships for Exchange Online
    and the Microsoft sign-in service; usable for any application's endpoint.
  - OutlookAuth: modern authentication, the Windows sign-in broker, MAPI over HTTP,
    client TLS 1.2, sign-in errors, the Entra device and its sign-in token, and for
    on-premises Exchange the NTLM level and stale saved Office credentials.
  - Mail files on a network drive, sizes against the limit Outlook actually enforces,
    lost connections to Exchange; whether the Office build is still supported for its
    channel and the product for Microsoft 365; the proxy Outlook's background requests
    use, against the user's.
- The application list shows in two columns when the window allows.
- Mail files are found the same way on Windows PowerShell 5.1 as on PowerShell 7; 5.1
  listed every file in the Outlook folder as one.
 
0.2 - Services, printing and Group Policy.
 
- Service: whether the Windows services an application depends on are installed, running
  and set to start the way they should, and how often they crashed. Configured per
  application in the Check Definitions; shipped for DATEV, Lexware, Sage, FortiClient and
  GlobalProtect.
- Printing: the print spooler, whether the default printer can be reached - Office waits
  on it whenever a document opens - offline printers, stuck jobs and print service errors.
- GroupPolicy: how long Group Policy holds up boot and logon, the slowest and failing
  extensions, slow-link detection, and a domain controller that could not be reached.
  Needs the admin prompt.
- Applications a Run now offers: Lexware, Sage, ADDISON, StarMoney, SFirm, DocuWare,
  ELO Java Client and ELOoffice; SwyxIt!, estos ProCall and STARFACE; Citrix Workspace,
  FortiClient, GlobalProtect and Securepoint VPN; pcvisit; Securepoint Antivirus, ESET,
  G DATA and Sophos; Server-Eye. Identifiers are sourced in docs/research.
- A Service Check can name OptionalServices: reported with their state, never judged for
  being stopped or disabled - the Server-Eye OCC Connector runs on one machine per site.
- An application whose installer records no install path is no longer merged with another
  one that does not either, so an old and a new VPN client side by side both appear.
 
0.1 - Gutcheck is a module.
 
The single-file script is retired. Everything it examined is now a Check described by
data: a Check Definition names a Kind the module implements and supplies that Kind's
parameters, and every threshold is one of those parameters rather than a literal.
 
- One command, one Report, as before. Technicians install once and update with the same
  command they installed with.
- The privileged half of a Run happens behind one UAC prompt, so an admin colleague can
  enter their own credentials while the rest of the Run stays in the technician's session.
- Every Finding states the Privilege it was gathered with, and Checks that could not run
  appear in the Report rather than being absent from it.
- Every Report states where its Check Definitions came from, which version they were and
  how old.
 
Upgrading from the script: see the project page. There is no compatibility shim.
'@

        }
    }
}