Rabu, 26 Oktober 2016

PowerShell v2 Tracking Down Registry Tweaks

Heres an example of how I took an action and tracked down the underlying information used to configuration the user interface. To help automate some of our internal processes I was tasked with finding ways to make PowerShell a component of our provisioning toolkit. In this case I wanted to change the default display for the control panel View by preference from Large icons to Small icons.

I could have spent a ton of time tracking down the key on Google, but, I prefer to use Sysinternals tools instead. First, I fired up Process Monitor with the Control Panel open. Once Process Monitor was capturing I simply clicked the Include Process from Window icon



and highlighted the inner window of the Control Panel.  After making my change I saw a few entries pop up in Process Explorer.  Flipping back I saw the path I needed to focus on.


Using this path I simply opened regedit, tweaked the values to test.


Once I was sure this was my key, I wrote the following function in PowerShell to handle it for my script. Note that this is profile dependent (HKCU).
function Set-ControlPanelViewToSmallIcons
{
 Write-Output "$(Write-TimeStamp): Attempting to set Control Panel View to `"Small Icons`"."
 if((Get-ItemProperty -Path "HKCU:SoftwareMicrosoftWindowsCurrentVersionExplorerControlPanel" -Name AllItemsIconView).AllItemsIconView -eq 1)
 {
  Write-Output "$(Write-TimeStamp): Control Panel View already set to `"Small Icons`"."
 }
 else
 {
  Write-Output "$(Write-TimeStamp): Control Panel View not set to `"Small Icons`". Attempting to set now."
  Set-ItemProperty -Path "HKCU:SoftwareMicrosoftWindowsCurrentVersionExplorerControlPanel" -Name AllItemsIconView -Value 1

  Write-Output "$(Write-TimeStamp): Validating Control Panel View has been set to `"Small Icons`"."
  if((Get-ItemProperty -Path "HKCU:SoftwareMicrosoftWindowsCurrentVersionExplorerControlPanel" -Name AllItemsIconView).AllItemsIconView -eq 1)
  {
   Write-Output "$(Write-TimeStamp): Control Panel View has been updated to `"Small Icons`"."
  }
  else
  {
   Write-Error "$(Write-Error): Control Panel View was not set to `"Small Icons`". Cancelling processing."
  }
 }
}
In the example above, $(Write-Error) is just a wrapper function for Get-Date -Format yyyyMMddHHmmss. 

Together Sysinternals tools and PowerShell can go a long way.  This is a very simple illustration of an other wise tedious and time-consuming process reduced to about a 3 minute task thanks to the right tools.

lamsim

About lamsim

Author Description here.. Nulla sagittis convallis. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.

Subscribe to this Blog via Email :