Building-and-Deploying-PowerShell-Custom

advertisement
Will Murphy
[email protected]
@williamwmurphy
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
manifest
 Easier to deploy
 Cons
 Distributed development is
hard
 Larger the module, the
bigger the file
 Pros
 Work in smaller units
 No reloading module when
changing single function
 Easier distributed
development
 Cons
 More files to maintain
 Update manifest and script
module every time you add
member
One file vs. Multiple files
Where to Install
 PSMODULEPATH
 C:\Windows\System32\WindowsPowerShell\v1.0\Module
s
 C:\Users\(username)\Documents\WindowsPowerShell\M
odules
 Your path
 Non-Shared: Program
files\CompanyName\Application\Module
 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
XCOPY,ZIP
MSI
 Pros
 Copy the folder to the
location.
 Zip the entire folder for
distribution.
 No special tools required.
 Cons
 Deployment may require
scripting.
 Version requires inspecting
the contents.
 Can’t update
PSMODULEPATH.
 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
curve.
 Can integrate with VS.
WIX
Resources
 URLs
 Writing PowerShell Modules

http://msdn.microsoft.com/enus/library/windows/desktop/dd878310(v=vs.85).aspx
 WIX toolset

http://wixtoolset.org/
Download