Forge Home


Adds Windows MSI to PE. Includes PowerShell module for automating agent installation.


7,832 latest version

4.5 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 2.1.0 (latest)
  • 2.0.2
  • 2.0.1
  • 2.0.0
  • 1.0.1
  • 1.0.0
released Jun 1st 2016
This version is compatible with:

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'souldo-pe_winagent', '2.1.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add souldo-pe_winagent
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install souldo-pe_winagent --version 2.1.0

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.



souldo/pe_winagent — version 2.1.0 Jun 1st 2016

#pe_winagent Build Status


pe_winagent is a module that helps with automating the installation process of Puppet Enterprise on Windows servers by riffing on the Linux 'curl' installation method for Puppet Enterprise installation process. It currently supports Puppet Enterprise 3.3, 3.7, 3.8, 2015.x and 2016.x.

The pe_winagent class runs on the puppet master and manages the Windows puppet agent MSI and installation scripts, while the pe_winagent::powershell_host class manages a PowerShell module that can be included in your Windows images to automate or kick off installation on demand. (Note: there's still a manual copy process to get the module on the image. No puppet before puppet until I get wizard powers).


To install, clone this repository to your modules directory:

git clone pe_winagent

If you're seeing this from the Puppet Forge, a simple puppet module install souldo/pe_winagent will suffice.



Apply the pe_winagent class to your puppetmaster and any compilers. This will download the appropriate puppet agent MSI into the packages/current/windows directory.


puppetserver    = The Puppetmaster hostname, defaults to $settings::server
caserver        = The CA Server, defaults tp $settings::ca_server


This class deploys the PowerShell module to a Windows host, which is good for using a PowerShell host to remotely manage installation and upgrade of puppet agents across your Windows infrastructure. This server must have a minimum of .NET 4.5 and Windows Management Framework 4.0 installed. It can also be used to update the PowerShell module across your infrastructure when new releases of this puppet module are released.

PowerShell Module: PuppetAgent

This is a PowerShell module with a few basic functions to install puppet either locally or remotely. If you already have puppet installed on Windows hosts, this would be a good way to ugprade.


Test-PuppetInstall    = Verify the PS module is working and if a PE agent is installed.
Install-Puppet        = Installs the puppet agent from a specified master.  Parameters below:       

  Local options:
  -Local            = Install Puppet agent locally
  -Master           = Specify the Puppet Master which contains the MSI/install script.
  -CertName     = Specify your FQDN for puppet registration.
  -CAServer     = Specify a CA server for the puppet agent.

  Remote options:
  -Remote           = Install Puppet agent remotely
  -ComputerList     = Either a single hostname or a CSV list of hosts to install remotely.

Note: To install Puppet remotely you need to have PSRemoting enabled and have TrustedHosts configured. If you don't know how to get started on that, you may want to consider the local method for now.

Install Puppet Remotely on a single host:

Install-Puppet -Remote -ComputerList myserver -Master my.puppetmaster.local

Install Puppet Remotely on multiple hosts:

Install-Puppet -Remote -ComputerList myservers.csv -Master my.puppetmaster.local

Upgrade the current node:

Install-Puppet -Local -Master my.puppetmaster.local

Install Puppet with a different hostname

Install-Puppet -Master my.puppetmaster.local -CertName windowspuppetbox.iscool.local


  • Due to some issues dealing with self-signed certificates and the lack of a simple (-k) flag to bypass on Invoke-WebRequest, the Powershell script for the client is necessary at this time to accomodate all installations.

  • This should work without puppet dependencies (other than pe_repo included in the Puppet Enterprise installation) and should technically work with all 2008/2012 editions, though it has only been tested with 2012 R2.

  • More importantly than Windows version is the Powershell version. The scripts were written and tested under Powershell 4.0. The check your version, from a Powershell prompt type $PSVersionTable.PSVersion. If your Major version is less than 4, you may want to upgrade.



  • Puppet Enterprise 2016.x is supported now.
  • Puppet Enterprise 3.3 is supported now.
  • Fixed issue with local installation not passing -CertName or -CAServer parameters.
  • Added a trap to kill the install process if the server can't be resolved or install script cannot be found.
  • Renamed Test-Puppet to Test-PuppetInstall, which now returns that a) this module is here and b) if Puppet Enterprise is already installed (and what version).
  • Removed the stubs for Uninstall-Puppet and Get-Puppet.
  • Removed the documentation for using install.ps1 as a standalone script. That's as logical as using install.bash and copying it everywhere.


  • Cleaned up for ongoing future support of PE 2015 versions. That sounds pretty epic but really I just changed it to base 2015 versions off of the new aio_agent_version fact if it exists to determine what agent package to download.


  • Added support for PE 2015.2.2 and agent 1.2.6.


  • Fixed a few puppet lint errors in the powershell host manifest.


  • Overhauled powershell scripts to include a module for remote agent installation. Many thanks to Chris Blodgett (@shotah) for the contributions and feedback on the PS side.

  • Switched from using 'curl' to using pe_staging module (couldn't use nanliu/staging due to a conflict in earlier version of PE (ENTERPRISE-258).

  • Added case statement to handle the new versioning for Puppet Agent in the PE 2015 releases.