If you launch a 32-bit instance of Powershell (%SystemRoot%syswow64WindowsPowerShellv1.0powershell.exe), then the registry provider only sees the limited 32-bit parts of the registry.
**32-bit console**
PS> (dir HKLM:SOFTWARE | measure).count - (dir HKLM:SOFTWAREwow6432node | measure).count
0
**64-bit console**
PS> (dir HKLM:SOFTWARE | measure).count - (dir HKLM:SOFTWAREwow6432node | measure).count
-5
Is there any way to force the provider into 64-bit mode? I could drop down to [Microsoft.Win32] .Net APIs, or maybe WMI, but I'd rather not. I'm using Powershell v2 CTP3 if that expands the possibilities at all.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…