Q:

How can I programmatically change Windows Shell settings using PowerShell? 

Using PowerShell, I can do:
$shell = new-object -com Shell. Application
$shell. GetSetting(0x2)

Which correctly returns whether the shell shows extensions for known file types. 
Note: see http://msdn.microsoft.com/en-us/library/gg537739(v=VS.85).aspx for a list of flag values that can be passed to GetSetting. 
Question: I can get the values, but how would I change them?  I looked through the Shell object model, but I'm just not seeing it a matching method to do that. 

A:

Not exact answer, but you can edit registry? 
For example:
set-itemproperty -Name HideFileExt -Value 0 -path HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

