Skip to content

Commit c7b7570

Browse files
Pnwcomputersclaude
andcommitted
Update v2.6 release docs: README, CHANGELOG, and docs/ rewrite
- README: add 3 more bug fixes to v2.6 table (clockres/du EULA, autorunsc args, NativeCommandError cleaner); update version history and technical section to match - CHANGELOG: add same 3 fixes to [2.6] Fixed section with full detail - docs/TROUBLESHOOTING.md: full rewrite — removed wrong-project content (WinGet/bloatware/offline-installers), added v2.6-specific entries for all fixed issues plus expected durations table - docs/INSTALLATION.md: full rewrite — replaced generic template content with SystemTester-specific requirements, folder structure, USB deployment guidance, and optional GPU tool instructions - docs/COMPATABILITY.md: full rewrite — v2.6 tested hardware matrix, speed test method compatibility table, VPN adapter exclusion list - Add .gitignore (ignores Reports/, Tools/, Sysinternals/ binaries) - Add LICENSE (BSD 2-Clause plain text for GitHub license detection) - Add assets/systemtester.png (banner image referenced in README) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent cc3b537 commit c7b7570

8 files changed

Lines changed: 424 additions & 88 deletions

File tree

.gitignore

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# --- SystemTester Specific ---
2+
# Ignore the generated reports (contains private system info!)
3+
/Reports/
4+
/Logs/
5+
*.txt
6+
*.csv
7+
*.html
8+
*.json
9+
10+
# Ignore the Sysinternals binaries
11+
# (Users should download these fresh via the script)
12+
/Tools/
13+
*.exe
14+
*.zip
15+
*.msi
16+
17+
# --- Windows System Clutter ---
18+
[Dd]esktop.ini
19+
[Tt]humbs.db
20+
$RECYCLE.BIN/
21+
*.lnk
22+
23+
# --- PowerShell / Development ---
24+
.history.ndjson
25+
__pycache__/
26+
*.log
27+
*.err
28+
/docs/_site/
29+
30+
# --- IDE / Editor Settings ---
31+
.vscode/
32+
.idea/
33+
*.swp
34+
*.bak

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
5151
- **OS Health — non-English Windows**: DISM and SFC output is localized; English phrase matching silently produced false-healthy results on non-English corrupt systems. DISM exit code (0 = clean, 11 = repairable, other = error) now captured and embedded as a language-neutral signal.
5252
- **Windows Update — search failure unhandled**: A running-but-broken WU service caused the COM search call to throw, writing "Search failed: ..." to output but triggering no recommendation. A WARNING recommendation is now emitted when search failure is detected.
5353
- **NVIDIA SMI — exit code ignored**: Both `nvidia-smi` invocations stored `Status="SUCCESS"` unconditionally. GPU driver errors (driver not loaded, device unavailable) were silently recorded as passing. Exit code is now checked and mapped correctly.
54+
- **Tool output — clockres and du EULA**: Neither `clockres` nor `du` were in the `-accepteula` injection list. On systems without prior EULA acceptance cached in the registry, both tools wrote the full Sysinternals license text into their report sections instead of actual data. Added to the list alongside `psinfo`, `pslist`, `handle`, `autorunsc`.
55+
- **Tool output — autorunsc usage help instead of entries**: `autorunsc -a -c` caused autorunsc's parser to consume `-c` as the selection type argument for `-a` (character `c` = Codecs only), leaving no CSV flag — tool printed usage/help instead of autorun entries. Changed to `-c` only; default behavior is logon startup entries in CSV format.
56+
- **Tool output — NativeCommandError formatting in reports**: `2>&1` in `Invoke-Tool` causes PowerShell 5.1 to wrap native-process stderr lines as `NativeCommandError` objects. `Out-String` serializes these as multi-line blocks containing `CategoryInfo`, `FullyQualifiedErrorId`, and `At <path>:line` context. `Convert-ToolOutput` now skips lines matching these patterns.
5457

5558
### 📈 Changed
5659
- GPU Tools Manager sub-menu renumbered: old Option 5 (Return to Main Menu) is now Option 6; new Option 5 is Download GPU Tools Automatically.

LICENSE

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
BSD 2-Clause License
2+
3+
Copyright (c) 2026, Pacific Northwest Computers
4+
5+
Redistribution and use in source and binary forms, with or without
6+
modification, are permitted provided that the following conditions are met:
7+
8+
1. Redistributions of source code must retain the above copyright notice, this
9+
list of conditions and the following disclaimer.
10+
11+
2. Redistributions in binary form must reproduce the above copyright notice,
12+
this list of conditions and the following disclaimer in the documentation
13+
and/or other materials provided with the distribution.
14+
15+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ A zero-dependency **PowerShell solution** that runs a comprehensive, curated set
2323

2424
## What's New in v2.6
2525

26-
v2.6 is a quality and reliability release. The network speed test engine has been fully rewritten around `curl.exe` to resolve systematic TLS failures on modern endpoints. GPU tool downloads now work reliably via a new PowerShell function that fixes a batch-file parser bug triggered by Windows delayed variable expansion. A PNWC branded startup banner has been added. Six false positive and recommendation gap issues in the recommendations engine have been corrected.
26+
v2.6 is a quality and reliability release. The network speed test engine has been fully rewritten around `curl.exe` to resolve systematic TLS failures on modern endpoints. GPU tool downloads now work reliably via a new PowerShell function that fixes a batch-file parser bug triggered by Windows delayed variable expansion. A PNWC branded startup banner has been added. Thirteen bugs have been corrected, including six recommendation engine false positives and three tool output cleaner failures discovered during live test validation.
2727

2828
### New Features
2929

@@ -44,6 +44,9 @@ v2.6 is a quality and reliability release. The network speed test engine has bee
4444
| 8 | SMART Detection | `"Unhealthy"` `HealthStatus` from `Get-PhysicalDisk` not included in the recommendations pattern | Medium: actively failing drives not flagged |
4545
| 9 | Windows Update | Two separate check blocks both fired `"ACTION: N update(s) pending"` for any `pendingCount > 0` | Low: doubled recommendations on most systems |
4646
| 10 | Windows Update | After removing the duplicate early check, 1–5 pending updates produced no recommendation at all | Low: silent gap in coverage for minor pending counts |
47+
| 11 | Tool Output | `clockres` and `du` not in the `-accepteula` list — full Sysinternals EULA text was written into the clock resolution and disk usage report sections instead of actual data | Medium: two report sections always empty/garbage |
48+
| 12 | Security Analysis | `autorunsc` argument `-a -c` caused autorunsc to consume `-c` as the type-selection character for `-a` (codecs only), leaving no CSV flag — tool printed usage/help text instead of autorun entries | Medium: autorun entries never captured |
49+
| 13 | Tool Output | `2>&1` stderr capture produced raw PowerShell `NativeCommandError` / `CategoryInfo` / `FullyQualifiedErrorId` formatting inside tool output sections | Low: error-object noise cluttering report output |
4750

4851
### What Changed Technically
4952

@@ -62,6 +65,11 @@ v2.6 is a quality and reliability release. The network speed test engine has bee
6265
- Battery: match narrowed from `"Battery"` to `"Battery: "` (colon + space) — only matches actual battery data lines
6366
- NIC exclusion: added `Wi-Fi|Wireless|WLAN` to the virtual/non-physical adapter exclusion pattern
6467
- Windows Update: consolidated into a single check block covering the full range: `>20` (WARNING), `>5` (INFO), `>0` (ACTION), `0` (GOOD)
68+
69+
**`Convert-ToolOutput` cleaner: Output quality fixes**
70+
- Added `clockres` and `du` to the `-accepteula` injection list so clock resolution and disk usage sections show actual data instead of EULA text
71+
- Added `NativeCommandError|CategoryInfo|FullyQualifiedErrorId|RemoteException|At .*\.ps1:` to the per-line skip pattern to strip PowerShell error-object formatting from `2>&1` captures
72+
- Fixed `autorunsc` argument from `-a -c` to `-c`: `-a` was consuming `-c` as its selection character (codecs), leaving no CSV flag; default logon-entry CSV output now works correctly
6573
---
6674

6775
## Key Capabilities
@@ -362,6 +370,9 @@ The `Reports\` folder is created automatically the first time a report is genera
362370
- Fixed Wi-Fi NIC false positive: added `Wi-Fi|Wireless|WLAN` to adapter exclusion pattern
363371
- Fixed SMART detection: added `"Unhealthy"` to `HealthStatus` pattern match
364372
- Fixed Windows Update: consolidated duplicate check blocks; added branch for 1–5 pending updates
373+
- Fixed clockres and du EULA output: added both to `-accepteula` injection list
374+
- Fixed autorunsc producing usage text: corrected argument from `-a -c` to `-c` (default logon entries, CSV)
375+
- Fixed PowerShell error formatting leaking into report output: added NativeCommandError/CategoryInfo filter to output cleaner
365376

366377
### v2.5: April 2026
367378
- Fixed latency test crash: removed undefined `$targetPort` and broken `Test-NetConnection` args

assets/systemtester.png

5.92 MB
Loading

docs/COMPATABILITY.md

Lines changed: 89 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,89 @@
1-
# Hardware Compatibility
2-
3-
## Tested Systems
4-
| Manufacturer | Model | Windows 10 | Windows 11 | Notes |
5-
|--------------|-------|------------|------------|-------|
6-
| Dell | OptiPlex 7090 ||| Full compatibility |
7-
| HP | EliteDesk 800 ||| BIOS update recommended |
8-
| Lenovo | ThinkCentre M920 || ⚠️ | Driver issues with Win11 |
9-
10-
## Known Issues
11-
- Surface devices: Touch driver conflicts
12-
- Gaming laptops: Manufacturer software conflicts
1+
# Compatibility
2+
3+
## Tested Configurations (v2.6)
4+
5+
### Operating Systems
6+
7+
| OS | Edition | Build | Status | Notes |
8+
|----|---------|-------|--------|-------|
9+
| Windows 11 | Pro Insider Preview | 26200 | Fully tested | Primary development platform |
10+
| Windows 11 | Pro | 22621+ | Compatible | Full test suite |
11+
| Windows 11 | Home | 22621+ | Compatible | Some tests require admin |
12+
| Windows 10 | Pro | 19041+ | Compatible | Full test suite |
13+
| Windows 10 | Home | 19041+ | Compatible | Some tests require admin |
14+
| Windows Server 2022 | Standard || Compatible | GPU tests may be limited |
15+
| Windows Server 2019 | Standard || Compatible | GPU tests may be limited |
16+
17+
PowerShell 5.1 (ships with Windows 10/11) is the primary target. PowerShell 7 is supported but not required.
18+
19+
---
20+
21+
## Tested Hardware (v2.6 test run)
22+
23+
### CPU
24+
| Model | Cores / Threads | Status |
25+
|-------|----------------|--------|
26+
| Intel Core i9-13900K | 24C / 32T | Tested |
27+
| Intel Core i7-12700K | 12C / 20T | Compatible |
28+
| AMD Ryzen 9 5900X | 12C / 24T | Compatible |
29+
30+
### GPU
31+
| Model | VRAM | Status | Notes |
32+
|-------|------|--------|-------|
33+
| NVIDIA GeForce RTX 3080 | 10 GB | Tested | nvidia-smi, VRAM accurate |
34+
| Intel UHD Graphics 770 | 2 GB (shared) | Tested | iGPU detected correctly |
35+
| AMD Radeon RX 6800 XT | 16 GB | Compatible | Registry detection |
36+
| NVIDIA GeForce RTX 4090 | 24 GB | Compatible | VRAM via REG_BINARY fix |
37+
38+
### Storage
39+
| Type | Interface | Status |
40+
|------|-----------|--------|
41+
| NVMe SSD | PCIe 4.0 | Tested (1373 MB/s write, 3996 MB/s read) |
42+
| SATA SSD | SATA III | Compatible |
43+
| HDD | SATA | Compatible |
44+
| USB Flash | USB 3.x | Compatible (script drive) |
45+
46+
### Network Adapters
47+
| Type | Status | Notes |
48+
|------|--------|-------|
49+
| Intel / Realtek Gigabit Ethernet | Full support | Physical NIC check applies |
50+
| Wi-Fi (802.11n / ax) | Full support | Excluded from "slow NIC" recommendation (v2.6) |
51+
| VMware VMnet | Full support | Excluded from physical NIC check |
52+
| Mullvad VPN | Full support | Excluded from physical NIC check |
53+
| Tailscale | Full support | Excluded from physical NIC check |
54+
| WireGuard | Full support | Excluded from physical NIC check |
55+
56+
---
57+
58+
## Speed Test Compatibility
59+
60+
The v2.6 engine uses a three-method cascade:
61+
62+
| Method | TLS | VPN Compatible | Notes |
63+
|--------|-----|---------------|-------|
64+
| curl.exe (primary) | 1.3 | Yes | WinHTTP/Schannel; ships with Windows 10 1803+ |
65+
| BITS (fallback) | 1.3 | Yes | Background Intelligent Transfer Service |
66+
| Invoke-WebRequest (last resort) | 1.2/1.3 | Partial | .NET; may fail under TLS-intercepting proxies |
67+
68+
curl.exe is available on Windows 10 version 1803 and later. On older systems, BITS is the primary method.
69+
70+
---
71+
72+
## Known Limitations
73+
74+
| Area | Limitation | Workaround |
75+
|------|-----------|------------|
76+
| coreinfo output | CPU topology map lines may not survive the output cleaner (format variation) | View full coreinfo output manually |
77+
| GPU-OpenGL | OpenGL ICD registry entries not always present | Not a failure — entry is omitted if no data found |
78+
| DISM/SFC | Require admin; skipped otherwise | Run via SystemTester.bat as Administrator |
79+
| Energy report | Requires admin; 15-second scan | Run via SystemTester.bat as Administrator |
80+
| Non-English Windows | DISM/SFC text matching bypassed; relies on exit codes | Fixed in v2.6 via language-neutral exit code embedding |
81+
| Windows Server | Some GPU/display tests may return limited data | Expected — server SKUs often lack display hardware |
82+
83+
---
84+
85+
## VPN Compatibility (v2.6)
86+
87+
Tested under Mullvad VPN (WireGuard protocol) with all tests passing. The following VPN software is excluded from the "slow physical NIC" recommendation engine:
88+
89+
Mullvad, Tailscale, WireGuard, OpenVPN, TAP-Windows, Cisco AnyConnect, GlobalProtect, Fortinet/FortiClient, NordLynx, Pulse, ProtonVPN, Surfshark, ZeroTier

docs/INSTALLATION.md

Lines changed: 135 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,141 @@
22

33
## System Requirements
44

5-
### Minimum Requirements
6-
- **Operating System**: Windows 10 (1909) or Windows 11
7-
- **PowerShell**: Version 5.1 or later
8-
- **RAM**: 4 GB minimum, 8 GB recommended
9-
- **Storage**: 2 GB free space for applications
10-
- **Network**: Internet connection for WinGet packages
11-
12-
### Recommended Requirements
13-
- **PowerShell**: Version 7.x for best performance
14-
- **RAM**: 16 GB for development workstations
15-
- **Storage**: SSD for faster deployment
16-
- **Network**: Broadband connection (10+ Mbps)
17-
18-
## Installation Methods
19-
20-
### Method 1: Direct Download
21-
1. Download the latest release from GitHub
22-
2. Extract to desired location
23-
3. Run as Administrator
24-
25-
### Method 2: Git Clone
5+
| Requirement | Minimum | Recommended |
6+
|-------------|---------|-------------|
7+
| OS | Windows 10 (1909) | Windows 11 |
8+
| PowerShell | 5.1 | 5.1 (ships with Windows) |
9+
| RAM | 4 GB | 8 GB+ |
10+
| Free disk space | 500 MB (tools + reports) | 1 GB |
11+
| Privileges | Standard user (limited) | Administrator (full test suite) |
12+
| Internet | Optional | Required for first-time tool download |
13+
14+
Administrator rights are required for: DISM/SFC scans, energy reports, SMART data, Windows Update queries, and some handle/process tests.
15+
16+
---
17+
18+
## Method 1: Batch Launcher (Recommended)
19+
20+
1. Download or clone this repository to any location (USB drive, local folder, network share)
21+
2. Run `SystemTester.bat` — it will request admin elevation automatically
22+
3. Choose **Option 5** to download the Sysinternals Suite (~35 MB) on first use
23+
4. Choose **Option 1** (interactive menu) or **Option 2** (run all tests automatically)
24+
25+
The batch launcher handles elevation, execution policy, and tool detection. No installation or system modification required.
26+
27+
---
28+
29+
## Method 2: Direct PowerShell
30+
31+
```powershell
32+
# Interactive menu
33+
powershell -ExecutionPolicy Bypass -File .\SystemTester.ps1
34+
35+
# Run all tests automatically and generate reports
36+
powershell -ExecutionPolicy Bypass -File .\SystemTester.ps1 -AutoRun
37+
```
38+
39+
If you see an execution policy error, run this once:
40+
```powershell
41+
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
42+
```
43+
44+
---
45+
46+
## Method 3: Git Clone
47+
2648
```bash
2749
git clone https://github.com/Pnwcomputers/SystemTester.git
2850
cd SystemTester
51+
```
52+
53+
Then run `SystemTester.bat` or invoke the PS1 directly.
54+
55+
---
56+
57+
## First-Time Sysinternals Setup
58+
59+
SystemTester requires the Sysinternals Suite for most tests.
60+
61+
**Automatic (recommended):**
62+
Use batch launcher **Menu Option 5** — downloads directly from Microsoft, VPN-compatible.
63+
64+
**Manual:**
65+
1. Download from [live.sysinternals.com](https://live.sysinternals.com) or the [Microsoft Store page](https://docs.microsoft.com/sysinternals)
66+
2. Extract all `.exe` files to `.\Sysinternals\` next to `SystemTester.ps1`
67+
68+
Minimum required tools for full test coverage:
69+
70+
| Tool | Required For |
71+
|------|-------------|
72+
| `psinfo.exe` | System information |
73+
| `coreinfo.exe` | CPU architecture |
74+
| `pslist.exe` | Process analysis |
75+
| `handle.exe` | File handle scan |
76+
| `psping.exe` | Network latency |
77+
| `autorunsc.exe` | Security / autorun scan |
78+
| `du.exe` | Disk usage |
79+
| `clockres.exe` | Clock resolution |
80+
| `contig.exe` | Disk fragmentation |
81+
82+
All other tools in the suite are used if present and gracefully skipped if absent.
83+
84+
---
85+
86+
## Optional GPU Tools
87+
88+
GPU stress testing tools are not required but extend testing capability.
89+
90+
Use batch launcher **Menu Option 6 → Option 5** to auto-download MSI Afterburner and FurMark directly to the `Tools\` folder.
91+
92+
Or download manually:
93+
- **GPU-Z**: [techpowerup.com/gpuz](https://www.techpowerup.com/gpuz/)
94+
- **MSI Afterburner**: msi.com/Landing/afterburner
95+
- **FurMark**: [geeks3d.com/furmark](https://geeks3d.com/furmark)
96+
- **HWiNFO64**: [hwinfo.com](https://www.hwinfo.com)
97+
98+
Place downloaded tools in the `Tools\` subfolder next to `SystemTester.ps1`.
99+
100+
---
101+
102+
## Portable USB Deployment
103+
104+
SystemTester is designed for USB deployment:
105+
106+
1. Copy the entire repository folder to a USB drive
107+
2. Ensure the drive is formatted as NTFS or exFAT (FAT32 limits file size and may be read-only)
108+
3. Run `SystemTester.bat` directly from the USB
109+
4. Reports are saved to `<USB drive>\SystemTester\Reports\`
110+
111+
The script auto-detects its own location and never writes outside its own directory tree.
112+
113+
---
114+
115+
## Folder Structure
116+
117+
```
118+
SystemTester/
119+
+-- SystemTester.ps1 # Main PowerShell script
120+
+-- SystemTester.bat # Batch launcher (start here)
121+
+-- README.md
122+
+-- LICENSE
123+
+-- Sysinternals/ # Auto-created by launcher Option 5
124+
| +-- psinfo.exe
125+
| +-- psping.exe
126+
| +-- autorunsc.exe
127+
| +-- ... (60+ tools)
128+
+-- Tools/ # GPU testing tools (optional)
129+
| +-- GPU-Z.exe
130+
| +-- MSIAfterburnerSetup.zip
131+
| +-- FurMark_Setup.exe
132+
+-- Reports/ # Auto-created on first report run
133+
+-- SystemTest_Clean_20260622_112034.txt
134+
+-- SystemTest_Detailed_20260622_112034.txt
135+
+-- energy-report.html
136+
```
137+
138+
---
139+
140+
## Uninstall
141+
142+
Delete the folder. SystemTester makes no registry changes, installs no services, and creates no files outside its own directory. Sysinternals tools may leave EULA acceptance entries in `HKCU\Software\Sysinternals\` — delete these manually if desired.

0 commit comments

Comments
 (0)