############################################################## # Script Name: PS_Remoting_Installed_Applications.ps1 # Version: 1.0 # Description: Using PowerShell Remoting Queries Remote # Systems for Installed Software ############################################################## $allComputers = Invoke-Command -computername SERVER01,SERVER02,SERVER03 ` -scriptblock { #Arrays for Holding Installed App Data $installedApps = @(); $installedAppsKeys = @(); #Pull 32bit Installed Apps Get-ChildItem hklm:\Software\Microsoft\Windows\CurrentVersion\Uninstall ` | ForEach-Object { $installedAppsKeys += Get-ItemProperty $_.pspath ` | Where-Object {$_.DisplayName -and !$_.ReleaseType -and ` !$_.ParentKeyName -and ($_.UninstallString -or $_.NoRemove)} }; #Check for 64bit Installed Apps and Pull Information if(Test-Path hklm:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall) { Get-ChildItem hklm:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall ` | ForEach-Object { $installedAppsKeys += Get-ItemProperty $_.pspath ` | Where-Object {$_.DisplayName -and !$_.ReleaseType -and !$_.ParentKeyName ` -and ($_.UninstallString -or $_.NoRemove)} }; } #Loop Through Installed Application Registry Keys and Pull Info foreach($instlApp in $installedAppsKeys) { #Local Variables Used in Reporting [string]$displayName = ""; [string]$displayVersion = ""; #Check for DisplayName is Null or Emtpy if(![string]::IsNullOrEmpty($instlApp.DisplayName)) { $displayName = $instlApp.DisplayName.ToString(); #Check to See If Display Version is Null or Empty if(![string]::IsNullOrEmpty($instlApp.DisplayVersion)) { $displayVersion = $instlApp.DisplayVersion.ToString(); } #Create Custom PSObject and Add to Reporting Array $app = New-Object PSObject; $app | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $displayName; $app | Add-Member -MemberType NoteProperty -Name "DisplayVersion" -Value $displayVersion; $installedApps += $app; } } #Send Back Reporting Array Sorted by Display Name $installedApps | Sort-Object DisplayName; } $allComputers | Format-Table PSComputerName,DisplayName,DisplayVersion -AutoSize
Wednesday, September 5, 2012
PowerShell: Get Report of Installed Applications Using Remoting
Below is a PowerShell script that uses PowerShell Remoting to pull a list of installed applications on a Windows system. Since the list is kept in the registry, you can easily use the Get-ChildItem cmdlet to take care of business. Found some resource links that helped me remove the Windows updates and hotfixes from the report.
Subscribe to:
Post Comments (Atom)
1 comment:
Hi Dean!
Very nice Blog!
I have subsribed to it, with adress:
http://itadmindev.blogspot.com/feeds/posts/default?alt=rss
greets
Peter Kriegel
http://www.admin-spurce.de
Post a Comment