74 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
|  | function Get-Soft { | ||
|  | <#
 | ||
|  | .SYNOPSIS | ||
|  | Remote and local view and delete software via WMI or Get-Package | ||
|  | .DESCRIPTION | ||
|  | Example: | ||
|  | Get-Soft localhost # default (or remote host) | ||
|  | Get-Soft localhost -wmi # use delete via WMI | ||
|  | Get-Soft localhost -package # use delete via Get-Package | ||
|  | .LINK | ||
|  | https://github.com/Lifailon | ||
|  | #> | ||
|  | Param ( | ||
|  | $srv="localhost", | ||
|  | [switch]$wmi, | ||
|  | [switch]$package | ||
|  | ) | ||
|  | if ($wmi) { | ||
|  | $soft_wmi = gwmi Win32_Product -ComputerName $srv | select Name,Version,Vendor, | ||
|  | InstallDate,InstallLocation,InstallSource | sort -Descending InstallDate | | ||
|  | Out-Gridview -Title "Software to server $srv" -PassThru | ||
|  | $soft_wmi_uninstall = $soft_wmi.Name | ||
|  | if ($soft_wmi_uninstall -ne $null) { | ||
|  | $wshell = New-Object -ComObject Wscript.Shell | ||
|  | $output = $wshell.Popup("Delete $soft_wmi_uninstall to server $srv ?",0,"Select action",4) | ||
|  | } else { | ||
|  | Write-Host Canceled | ||
|  | break | ||
|  | } | ||
|  | if ($output -eq "7") { | ||
|  | Write-Host Canceled | ||
|  | break | ||
|  | } | ||
|  | if ($output -eq "6") { | ||
|  | $uninstall = (gwmi Win32_Product -ComputerName $srv -Filter "Name = '$soft_wmi_uninstall'").Uninstall() | ||
|  | $outcode = $uninstall.ReturnValue | ||
|  | if ($outcode -eq 0) { | ||
|  | Write-Host -ForegroundColor Green "Successfully" | ||
|  | } else { | ||
|  | Write-Host -ForegroundColor Red "Error: $outcode" | ||
|  | } | ||
|  | } | ||
|  | } | ||
|  | if ($package) { | ||
|  | if ($srv -like "localhost") { | ||
|  | $soft_pack = Get-Package -ProviderName msi,Programs | Out-Gridview -Title "Software to server $srv" -PassThru | ||
|  | } else { | ||
|  | $soft_pack = icm $srv {Get-Package} | ? ProviderName -match "(Programs)|(msi)" | Out-Gridview -Title "Software to server $srv" -PassThru | ||
|  | } | ||
|  | if ($soft_pack -ne $null) { | ||
|  | $soft_name = $soft_pack.Name | ||
|  | $wshell = New-Object -ComObject Wscript.Shell | ||
|  | $output = $wshell.Popup("Delete $soft_name to server $srv ?",0,"Select action",4) | ||
|  | } else { | ||
|  | Write-Host Canceled | ||
|  | break | ||
|  | } | ||
|  | if ($output -eq "7") { | ||
|  | Write-Host Canceled | ||
|  | break | ||
|  | } | ||
|  | if ($output -eq "6") { | ||
|  | if ($srv -like "localhost") { | ||
|  | Get-Package -Name "$soft_name" | Uninstall-Package -Force -ForceBootstrap | ||
|  | } else { | ||
|  | $session = New-PSSession $srv | ||
|  | icm -Session $session { | ||
|  | Get-Package -Name "$using:soft_name" | Uninstall-Package -Force -ForceBootstrap | ||
|  | } | ||
|  | Remove-PSSession $session | ||
|  | } | ||
|  | } | ||
|  | } | ||
|  | } |