Collection of PowerShell modules maintained in a single repository with automated build, test, and publish workflows.
This repository serves as a centralized collection of PowerShell modules. Each module is independently versioned and can be published to the PowerShell Gallery (PSGallery). The repository includes a comprehensive build system with automated testing, code analysis, and publishing capabilities.
Here you can view the Modules which currently exist in this Repository.
| Module Name | Description | Link |
|---|---|---|
| PS.Capa.CapaOne | Unofficial API Wrapper for CapaSystems CapaOne | PS.Capa.CapaOne |
| PS.ElasticShell | API Wrapper for interacting with ElasticSearch | PS.ElasticShell |
To see all modules, check the modules directory.
- PowerShell 7.0 or higher
- Git
- (Optional) Pester for testing
- (Optional) PSScriptAnalyzer for code quality checks
Each module can be installed from PSGallery once published:
Install-Module -Name ModuleName -Repository PSGallery-
Clone this repository:
git clone https://github.com/AniTexs/My-PWSH-Modules.git cd My-PWSH-Modules
-
Explore the modules:
Get-ChildItem ./modules
-
Import a module locally:
Import-Module ./modules/ModuleName/ModuleName.psd1
My-PWSH-Modules/
βββ modules/ # All PowerShell modules
β βββ ModuleName/ # Individual module directory
βββ build/ # Build and automation scripts
βββ .github/workflows/ # GitHub Actions CI/CD
βββ docs/ # Documentation
βββ CONTRIBUTING.md # Contribution guidelines
βββ LICENSE # MIT License
βββ README.md # This file
For detailed information about module structure, see Module Structure Guide.
This repository includes PowerShell scripts for building, testing, and publishing modules.
./build/Build-Module.ps1 -ModuleName YourModule# Test a specific module
./build/Test-Module.ps1 -ModuleName YourModule
# Test all modules
./build/Test-All.ps1# Analyze a specific module
./build/Invoke-Analyzer.ps1 -ModuleName YourModule
# Analyze all modules
./build/Invoke-Analyzer.ps1# First, build the module
./build/Build-Module.ps1 -ModuleName YourModule
# Then publish (requires PSGallery API key)
./build/Publish-Module.ps1 -ModuleName YourModule -ApiKey $env:PSGALLERY_API_KEYThis repository uses GitHub Actions for continuous integration and deployment:
-
CI Pipeline (
ci.yml): Runs on every push and pull request- Builds all modules
- Runs PSScriptAnalyzer
- Executes all tests
- Runs on Ubuntu, Windows, and macOS
-
Publish Pipeline (
publish.yml): Publishes modules to PSGallery- Triggered by releases or manual workflow dispatch
- Validates and builds the module
- Publishes to PowerShell Gallery
To publish a module to PSGallery:
- Ensure your module version is updated in the manifest
- Create a release tag:
ModuleName-v1.0.0 - The GitHub Action will automatically publish to PSGallery
Or use manual workflow dispatch with the module name.
Important: This repository accepts contributions to existing modules only. New modules should be created in your own repository.
We welcome contributions that:
- Fix bugs in existing modules
- Improve existing module functionality
- Enhance documentation
- Add tests
We do not accept:
- New modules (create your own repository instead)
- Direct pushes of new modules
Please read CONTRIBUTING.md for detailed guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b fix/your-fix) - Make your changes to existing modules
- Run tests and ensure they pass
- Commit your changes (
git commit -m 'Fix: description') - Push to your fork (
git push origin fix/your-fix) - Open a Pull Request
This repository and all modules within it are licensed under the MIT License. See LICENSE file for details.
MIT License
Copyright (c) 2025 Nicolai Jacobsen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
- Module Structure Guide - Detailed guide on module structure and best practices
- Example Module Template - Template for creating new modules in your own repository
- Contributing Guidelines - How to contribute to existing modules
When adding a new module to this repository:
- Create the module directory:
modules/ModuleName/ - Follow the Module Structure Guide
- Ensure the module has:
- Module manifest (
.psd1) - Module script file (
.psm1) - README.md
- Tests
- Module manifest (
- Test locally before committing
- Update this README to list the new module
If you encounter issues with any module:
- Check the module's README for documentation
- Search existing issues in this repository
- Open a new issue with:
- Module name and version
- Description of the issue
- Steps to reproduce
- Expected vs actual behavior
Thank you to all contributors who help improve these modules!
For questions or discussions, please open an issue in this repository.
Note: If you've created your own PowerShell module, we encourage you to publish it in your own repository and share it with the PowerShell community independently!