On Thu, Sep 18, 2014 at 2:17 PM, Brian Morris <[email protected]>
wrote:

> Holy cow, Rob... that was great info! All I did was change "System32" to
> "sysnative", and it worked on the first try. All of that frustration boiled
> down to one part of one path...
>
> Thank you for the link, too. It helps to understand why this happens.
> Cheers to you!
>

I filed https://tickets.puppetlabs.com/browse/FACT-710. as facter should
use 64-bit powershell when available.


> On Thu, Sep 18, 2014 at 1:59 PM, Rob Reynolds <[email protected]> wrote:
>
>>
>>
>> On Thu, Sep 18, 2014 at 3:54 PM, Rob Reynolds <[email protected]> wrote:
>>
>>>
>>>
>>> On Thu, Sep 18, 2014 at 2:11 PM, Brian Morris <[email protected]
>>> > wrote:
>>>
>>>> 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*
>>>>
>>>>
>>> This is running in a 64bit process.
>>>
>>>
>>>
>>>> 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
>>>>
>>>
>> C:\Windows\System32 is also subject to File system redirection, which is
>> also talked about in that post. Likely fixing only this as sysnative will
>> return the right data because PowerShell will run in 64bit mode. But I
>> would explore the ruby only way to speed up the fact.
>>
>>
>>> "& {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
>>>> ----------
>>>>
>>>
>>> This is in a 32bit process unless you are on the newest 3.7.0 or 3.7.1
>>> x64 builds of Puppet. You are hitting registry redirection.  Be sure to
>>> checkout Common Gotchas[1] especially for how to turn off registry
>>> redirection in a 32 bit process.
>>>
>>>
>>> [1] http://puppetlabs.com/blog/how-avoid-common-windows-gotchas-puppet
>>>
>>>
>>> More detail:
>>>
>>> When a 32 bit process calls the registry and is subject to redirection,
>>> it only sees the Wow6432Node under software. Check out that link above, it
>>> explains quite a bit in more detail.
>>>
>>>
>>>
>>>>
>>>> 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 [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/puppet-users/a76b897f-9f1f-4e82-ab18-344ae9a6e2c7%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/puppet-users/a76b897f-9f1f-4e82-ab18-344ae9a6e2c7%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> --
>>> Rob Reynolds
>>> Developer, Puppet Labs
>>>
>>> *Join us at PuppetConf 2014 <http://www.puppetconf.com/>, September
>>> 20-24 in San Francisco*
>>>
>>
>>
>>
>> --
>> Rob Reynolds
>> Developer, Puppet Labs
>>
>> *Join us at PuppetConf 2014 <http://www.puppetconf.com/>, September
>> 20-24 in San Francisco*
>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "Puppet Users" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/puppet-users/8m8mt4G_OKU/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/puppet-users/CAMJiBK7GNgWponY1y74bpQ5x_YPbRcPeK3%3DmsyBc-W2txDfQaQ%40mail.gmail.com
>> <https://groups.google.com/d/msgid/puppet-users/CAMJiBK7GNgWponY1y74bpQ5x_YPbRcPeK3%3DmsyBc-W2txDfQaQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> 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 [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/puppet-users/CAH8X0%2BG8cxLaTG35uKqXBrbhEvHzH1GGZLsVcq7Bso0MSYaKxw%40mail.gmail.com
> <https://groups.google.com/d/msgid/puppet-users/CAH8X0%2BG8cxLaTG35uKqXBrbhEvHzH1GGZLsVcq7Bso0MSYaKxw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Josh Cooper
Developer, Puppet Labs

*Join us at PuppetConf 2014 <http://www.puppetconf.com/>, September
20-24 in San Francisco*

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/CA%2Bu97ukj-hMvfo0zJvst9%3Dpbk-%2BgJGtAmWXQS8drCGTFnGAPHg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to