Skip to content

Latest commit

 

History

History
108 lines (75 loc) · 6.33 KB

README.md

File metadata and controls

108 lines (75 loc) · 6.33 KB

Writing PowerShell Modules

Materials

An important note: The content of this session made implicit assumptions, for better or worse. For example, It should be available on the PowerShell Gallery (or an internal repository) requires that you use a proper module manifest

References

These references were directly mentioned or used in coming up with the Writing PowerShell Modules: Tips, Tools, and Best Practices session at the 2017 PowerShell + DevOps Global Summit, or just related to the topic : )

Interesting Community Module Designs

And many more. Poke around other community modules to see what folks are doing!

Module Building Tools

Tools and References

Getting and publishing modules:

Package repositories:

Source control and related tooling:

  • GitHub - Recommended for public projects. Many folks have auth, many tools integrate, PowerShell team uses it
  • GitLab - Community edition is fantastic, enables CI
  • VSTS - If you already paid for it. Personally not a fan of build systems that aren't defined in code

Example tools that integrate with GitHub:

Avoid fun with maml, xml:

  • Platyps - Generate documentation from markdown, and vice versa
  • EZOut - Simplify writing format files. Alternatively, just poke around other folks' psm1xml

Mentioned during tips on functions, and making it feel PowerShell-y:

Discussions on module design:

Linting and testing:

CI/CD - Run your tests, among other things:

  • AppVeyor - Free, perfect for public PowerShell modules
  • GitLab CE CI
  • Jenkins
  • VSTS - If you already paid for it. Maybe. Personally not a fan of build systems that aren't defined in code
  • Invoke-BuildUsed in an example of non-PowerShelly authoring. Awesome for users, harder for contributors
  • Psake - Not as much functionality as Invoke-Build, and was dead, but this might change...

On module and function design, among other things:

Misc: