This module adds an exec
provider allowing Puppet to execute PowerShell commands.
The best way to install this module is with the puppet module
subcommand or the puppet-module
Gem. On your puppet master, execute
the following command, optionally specifying your puppet master's
modulepath
in which to install the module:
$ puppet module install [--modulepath <path>] joshcooper/powershell
See the section Installing Modules for more information.
If you'd like to install this module from source, please simply clone a copy
into your puppet master's modulepath
. Here is an example of how to do so for
Puppet Enterprise:
$ cd /etc/puppetlabs/puppet/modules $ git clone
git://github.com/joshcooper/puppetlabs-powershell.git powershell
To rename the Guest
account:
exec { 'rename-guest':
command => '$(Get-WMIObject Win32_UserAccount -Filter "Name=\'guest\'").Rename("new-guest")',
unless => 'if (Get-WmiObject Win32_UserAccount -Filter "Name=\'guest\'") { exit 1 }'
provider => powershell
}
Notice that the command
parameter is single-quoted to prevent puppet
from interpolating $(..)
. Also note that the example uses the
unless
parameter to make the resource idempotent. The command
is
only executed if the Guest
account does not exist, as indicated by
unless
returning 0.
The powershell provider also supports the onlyif
exec parameter. See
the
exec
resource for more information about these parameters.
- Josh Cooper [email protected]
- This module requires PowerShell to be installed and the
powershell.exe
to be available in the systemPATH
. - On 32-bit versions of Windows, puppet will always invoke the 32-bit version of
powershell.exe
due to file system redirection. - Be careful when using PowerShell variables, e.g.
$_
, as they must be escaped in puppet manifests either using backslashes or single quotes.