Brian Morris
2014-Sep-18 19:11 UTC
[Puppet Users] Using Powershell in facters yields no data
Hello all,
I have been banging my head against this one for a couple of days. I am
trying to use Powershell to comb the Windows registry for installed
applications, such as VMware Tools, to create a custom facter. If I run
this code from a PS prompt it works, and returns the expected data:
PS C:\> Get-ChildItem
hklm:\software\microsoft\windows\currentversion\uninstall | ForEach-Object
{Get-ItemProperty $_.ps
path} | Where-Object {$_.DisplayName -eq "VMware Tools"} |
ForEach-Object
-process {$_.DisplayVersion }
*9.4.6.1770165*
However, running the same thing through Puppet as a facter yields zero data:
----------
Facter.add("vmtools_version") do
confine :osfamily => "Windows"
setcode do
Facter::Util::Resolution.exec('C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-Command "& {Get-ChildItem
hklm:\software\microsoft\windows\currentversion\uninstall | ForEach-Object
{Get-ItemProperty $_.pspath} | Where-Object {$_.DisplayName -eq \"VMware
Tools\"} | ForEach-Object -process {$_.DisplayVersion } } "')
end
end
----------
The left side shows up in the facters as "vmtools_version", but the
right
side is always empty. I have tried using the GetItem module instead, and
tried various combinations of the "-Command" switch, removed the
"For-Each"
handler to see if would spit out a huge block of text, and even tried
wrapping the whole thing in a "try & catch" to see if any error
states are
generated, but have never gotten any right side output at all.
Does anyone have an idea that might make this work?
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to puppet-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/a76b897f-9f1f-4e82-ab18-344ae9a6e2c7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.