Will Murphy
[email protected]
Who am I?
 Started coding and scripting in 1999.
 C, C++, BASH
 Started in IT in 2000 while co-oping in college.
 Korn Shell and PERL on AIX
 Written Production solutions in PERL,KSH,BASH, and
VB Script
 Started with PowerShell v1 in 2009.
 Lead group from 2 out of 8 to 8 out of 11 engineers
using PowerShell.
What is a Module?
 Collection of functionalities.
 Common nouns in cmdlets and functions.
 Members are not restricted like with snap-ins.
 Four types of modules
 Binary (.dlls) .NET compiled code
 Script (.psm1) collection of advanced functions
 Manifest (.psd1) no root module, nested modules
 Dynamic (non persistent) uses New-Module
Structure of a Script Module
 Files
 Script module file .psm1 –required
 Manifest file .psd1
 Script files .ps1
 Format files .format.ps1xml
 Help files .txt(v2/v3) .cab/.xml(v3)
 Application libraries .dll
 Script module file
 Member definitions or execution of other script files
 Manifest file
 Contains script modules file to execute
 Required components: PowerShell, CLR versions, other modules
 Metadata: Author, Description
 Other components to load
One file vs. Multiple files
One File
Multiple Files
 Pros
 Fewer files to manage
 No/Fewer updates to
 Easier to deploy
 Cons
 Distributed development is
 Larger the module, the
bigger the file
 Pros
 Work in smaller units
 No reloading module when
changing single function
 Easier distributed
 Cons
 More files to maintain
 Update manifest and script
module every time you add
One file vs. Multiple files
Where to Install
 C:\Windows\System32\WindowsPowerShell\v1.0\Module
 C:\Users\(username)\Documents\WindowsPowerShell\M
 Your path
 Non-Shared: Program
 Shared: Program Files\Common Files\Module
 Where it makes sense
C:\Program Files (x86)\CompanyName\PSModules
Lesson Learned
 Be consistent.
 Function names, parameter names.
 Common parameters are used the same way.
 If it’s dangerous, assume that instructions/help won’t
be read.
 Set defaults to help with control execution.
 -WhatIf is your friend
 Borrow from the community
 We have a large, enthusiastic community; and they’re
really smart
Deployment Options
 Pros
 Copy the folder to the
 Zip the entire folder for
 No special tools required.
 Cons
 Deployment may require
 Version requires inspecting
the contents.
 Can’t update
 Pros
 Single installation file.
 Can create folder path.
 Can perform other actions.
 Silent install allows for
easier deployments.
 Versioning maintained by
Windows Installer.
 Cons
 Requires tools and
knowledge to build MSI.
Building MSIs
 Free and paid tools available.
 Visual Studio-$$
 Includes two options to build MSIs with wizards, but
limited flexibility.
 Option to buy additional tools.
 WIX – free
 Flexible and powerful, but can have a steep learning
 Can integrate with VS.
 URLs
 Writing PowerShell Modules
 WIX toolset