{"id":49584637,"url":"https://github.com/mattman-ps/systemchecks","last_synced_at":"2026-05-03T22:01:03.530Z","repository":{"id":254647936,"uuid":"847152337","full_name":"mattman-ps/systemchecks","owner":"mattman-ps","description":"PowerShell module for performing various system checks.","archived":false,"fork":false,"pushed_at":"2026-05-03T20:46:55.000Z","size":103,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-03T21:25:59.922Z","etag":null,"topics":["devops","monitoring","powershell","system-checks","validation"],"latest_commit_sha":null,"homepage":"https://mattman-ps.github.io/systemchecks/","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mattman-ps.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-08-25T02:14:34.000Z","updated_at":"2026-05-03T20:47:00.000Z","dependencies_parsed_at":"2024-08-25T03:27:00.277Z","dependency_job_id":"55d555e4-7074-4d4a-af24-0e7d5b56c34b","html_url":"https://github.com/mattman-ps/systemchecks","commit_stats":null,"previous_names":["mattman-ps/systemchecks"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/mattman-ps/systemchecks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattman-ps%2Fsystemchecks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattman-ps%2Fsystemchecks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattman-ps%2Fsystemchecks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattman-ps%2Fsystemchecks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mattman-ps","download_url":"https://codeload.github.com/mattman-ps/systemchecks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattman-ps%2Fsystemchecks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32586187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","monitoring","powershell","system-checks","validation"],"created_at":"2026-05-03T22:00:36.894Z","updated_at":"2026-05-03T22:01:03.511Z","avatar_url":"https://github.com/mattman-ps.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SystemChecks\n\n[![PowerShell Gallery Version](https://img.shields.io/powershellgallery/v/systemchecks)](https://www.powershellgallery.com/packages/systemchecks)\n[![License](https://img.shields.io/github/license/mattman-ps/systemchecks)](https://github.com/mattman-ps/systemchecks/blob/main/LICENSE)\n[![Tests](https://img.shields.io/github/actions/workflow/status/mattman-ps/systemchecks/tests.yml?label=tests)](https://github.com/mattman-ps/systemchecks/actions/workflows/tests.yml)\n[![Documentation](https://img.shields.io/badge/docs-mkdocs-blue)](https://mattman-ps.github.io/systemchecks/)\n\nA PowerShell module for running repeatable system health checks across Windows infrastructure.  I got tired of writing one-off diagnostic scripts that lived in random folders and couldn't be reused, so I packaged the patterns I kept reaching for into a proper module.\n\n## 📑 Table of Contents\n\n- [Overview](#-overview)\n- [Features](#-features)\n- [Requirements](#-requirements)\n- [Installation](#-installation)\n- [Quick Start](#-quick-start)\n- [Usage Examples](#-usage-examples)\n- [Documentation](#-documentation)\n- [Contributing](#-contributing)\n- [Changelog](#-changelog)\n- [License](#-license)\n- [Author](#-author)\n\n## 🔍 Overview\n\nSystemChecks lets you describe what a healthy system looks like in a JSON file, which services should be running, which files should exist, which web endpoints should return 200 and then run all of those checks in one go.  Results come back as a flat list of objects that you can filter, export, or feed into whatever alerting pipeline you use.\n\n## ✨ Features\n\n- **JSON-driven checks**: Define checks in a config file rather than writing a new script every time\n- **Consistent output shape**: Every check returns the same properties, so piping to `Where-Object`, `Export-Csv`, etc. always works the same way\n- **PowerShell Native**: Leverages PowerShell 7.4+ features for modern scripting\n- **Individual functions available**: You can also call any check function directly without a config file\n- **Pester-tested**: Functions have unit tests covering both happy-path and error scenarios\n\n## 📋 Requirements\n\n- **PowerShell**: 7.4 or higher\n- **Operating System**: Windows\n- **Dependencies**: [Microsoft Error Lookup Tool](https://learn.microsoft.com/en-us/windows/win32/debug/system-error-code-lookup-tool) (required only for `Get-Win32Error` / scheduled task error code lookup)\n\n## 📦 Installation\n\n### From PowerShell Gallery\n\n```powershell\n# Install for current user\nInstall-Module -Name systemchecks -Scope CurrentUser\n\n# Install for all users (requires admin/sudo)\nInstall-Module -Name systemchecks -Scope AllUsers\n```\n\n### From Source\n\n```powershell\n# Clone the repository\ngit clone https://github.com/mattman-ps/systemchecks.git\ncd systemchecks\n\n# Import the module\nImport-Module .\\src\\systemchecks.psd1\n```\n\n### Verify Installation\n\n```powershell\n# Check module is loaded\nGet-Module -Name systemchecks\n\n# View available commands\nGet-Command -Module systemchecks\n```\n\n## 🚀 Quick Start\n\n```powershell\n# Import the module\nImport-Module systemchecks\n\n# View available commands\nGet-Command -Module systemchecks\n\n# Run a simple health check\nTest-ServiceHealth -ServiceName 'w3svc'\n\n# Run checks from a config file and filter to anything not OK\nGet-SystemHealth -ConfigFileName \".\\config_files\\system1.json\" |\n    Where-Object { $_.Status -notin @('OK','Exists','Responding') }\n```\n\n## 📋 Available Functions\n\nSystemChecks provides the following functions for building health checks:\n\n- **[Get-SystemHealth](#get-systemhealth)** - Orchestrates all checks defined in one or more JSON config files\n- **[Test-ProcessHealth](#test-processhealth)** - Check if a process is running and responding\n- **[Test-ServiceHealth](#test-servicehealth)** - Verify the running status of a Windows service\n- **[Test-FileExists](#test-fileexists)** - Check if a file or directory path exists\n- **[Test-ShareExists](#test-shareexists)** - Verify if a UNC share or drive path is accessible\n- **[Test-ScheduledTask](#test-scheduledtask)** - Get the last-run status of a scheduled task\n- **[Test-URIHealth](#test-urihealth)** - Check that a web endpoint returns HTTP 200\n- **[Test-TimeSync](#test-timesync)** - Compare the date/time on two remote systems to spot NTP drift\n- **[Get-FileCount](#get-filecount)** - Count files in a directory (supports date-based sub-folders)\n- **[Get-Win32Error](#get-win32error)** - Look up a human-readable description for a Windows error code\n\n## 💡 Usage Examples\n\n### Get-SystemHealth\n\nRun all checks defined in a config file and show anything that isn't healthy:\n\n```powershell\nGet-SystemHealth -ConfigFileName \".\\config_files\\system1.json\" |\n    Where-Object { $_.Status -notin @('OK','Exists','Responding') } |\n    Format-Table SystemName, Name, Type, Status, Comment -AutoSize\n```\n\n### Test-ProcessHealth\n\nCheck if a process is running and responding:\n\n```powershell\nTest-ProcessHealth -ProcessName \"explorer\"\n```\n\n### Test-ServiceHealth\n\nVerify the status of a Windows service:\n\n```powershell\nTest-ServiceHealth -ServiceName 'w3svc'\n```\n\n### Test-FileExists\n\nCheck if a file path exists:\n\n```powershell\nTest-FileExists -FilePath \"c:\\my\\file\"\n```\n\n### Test-ShareExists\n\nVerify if a network share path is accessible:\n\n```powershell\nTest-ShareExists -SharePath \"\\\\server\\e$\"\n```\n\n### Test-ScheduledTask\n\nGet the status of a scheduled task:\n\n```powershell\nTest-ScheduledTask -TaskPath \"\\Tasks\\Send Email\"\n```\n\n### Test-URIHealth\n\nCheck the health of a web endpoint:\n\n```powershell\nTest-URIHealth -URI \"http://server/health\"\n```\n\n### Test-TimeSync\n\nCompare time synchronization between two systems:\n\n```powershell\nTest-TimeSync -System1Name \"server1\" -System2Name \"server2\" -Verbose\n```\n\n### Get-FileCount\n\nGet a count of files in a directory:\n\n```powershell\nGet-FileCount -FilePath \"c:\\my\\folder\"\n\n# Count files in today's dated sub-folder (e.g. c:\\exports\\20260308)\nGet-FileCount -FilePath \"c:\\exports\" -AppendLeaf Today -LeafFormat yyyyMMdd\n```\n\n### Get-Win32Error\n\nLook up detailed Windows error information:\n\n```powershell\nGet-Win32Error 0x80070005  # Access Denied error\n```\n\n## 📚 Documentation\n\nFull documentation is available at the project's [documentation site](https://mattman-ps.github.io/systemchecks/) (powered by MkDocs).\n\n### Building Documentation Locally\n\n```powershell\n# Install MkDocs\npip install mkdocs\n\n# Serve documentation locally\nmkdocs serve\n\n# Build static documentation\nmkdocs build\n```\n\n## 🛠️ Development\n\n### Project Structure\n\n```none\nsystemchecks/\n├── src/              # Module source code\n│   ├── classes/      # PowerShell classes\n│   ├── private/      # Private functions\n│   ├── public/       # Public/exported functions\n│   └── resources/    # Additional resources\n├── tests/            # Pester tests\n├── example/          # Usage examples\n├── docs/             # Documentation source\n└── assets/           # Project assets\n```\n\n### Running Tests\n\n```powershell\n# Run all tests\nInvoke-Pester\n\n# Run tests with coverage\nInvoke-Pester -CodeCoverage '.\\src\\**\\*.ps1'\n```\n\n### Building the Module\n\nThis project uses a custom build system. See [project.json](project.json) for configuration details.\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\nPlease ensure your code:\n\n- Follows PowerShell best practices\n- Includes appropriate Pester tests\n- Updates documentation as needed\n- Follows the existing code style\n\n## 📝 Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for a list of changes and version history.\n\n## 📄 License\n\nThis project is licensed under the terms specified in the [LICENSE](LICENSE) file.\n\n## 👤 Author\n\n- GitHub: [@mattman-ps](https://github.com/mattman-ps)\n- Project Link: [https://github.com/mattman-ps/systemchecks](https://github.com/mattman-ps/systemchecks)\n\n## 🙏 Acknowledgments\n\n- Built with PowerShell 7.4+\n- Module scaffolded using [ModuleTools](https://github.com/belibug/ModuleTools)\n- Testing powered by [Pester](https://pester.dev/)\n- Documentation generated with [MkDocs](https://www.mkdocs.org/)\n\n---\n\n**Note**: This module is currently in early development (v0.2.0). APIs and features are subject to change. Please check the [CHANGELOG](CHANGELOG.md) for the latest updates.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattman-ps%2Fsystemchecks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattman-ps%2Fsystemchecks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattman-ps%2Fsystemchecks/lists"}