50 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
|  | function Get-Update { | |||
|  | <#
 | |||
|  | .SYNOPSIS | |||
|  | Remote and local view and delete updates packages | |||
|  | Using WMI, dism Online and Invoke-Command via WinRM | |||
|  | .DESCRIPTION | |||
|  | Example: | |||
|  | Get-Update localhost # windows updates list (WMI) default | |||
|  | Get-Update localhost | Out-GridView | |||
|  | Get-Update localhost -delete # DISM packages list for delete updates | |||
|  | .LINK | |||
|  | https://github.com/Lifailon | |||
|  | #> | |||
|  | Param ( | |||
|  | $srv="localhost", | |||
|  | [switch]$delete | |||
|  | ) | |||
|  | if ($delete){ | |||
|  | if ($srv -like "localhost") { | |||
|  | $dismName = dism /Online /Get-Packages /format:table |  | |||
|  | Out-Gridview -Title "DISM $Text_Packages $Text_ToServer $srv" <EFBFBD>PassThru | |||
|  | if ($dismName -ne $null) { | |||
|  | $dismNamePars = $dismName -replace "\|.+" | |||
|  | $dismNamePars = $dismNamePars -replace "\s" | |||
|  | $wshell = New-Object -ComObject Wscript.Shell | |||
|  | $output = $wshell.Popup("Delete Update $dismNamePars to server $srv ?",0,"Select action",4) | |||
|  | if ($output -eq "6") { | |||
|  | dism /Online /Remove-Package /PackageName:$dismNamePars /quiet /norestart | |||
|  | } | |||
|  | } | |||
|  | } else { | |||
|  | $session = New-PSSession $srv | |||
|  | $dismName = icm -Session $session {dism /Online /Get-Packages /format:table} |  | |||
|  | Out-Gridview -Title "DISM $Text_Packages $Text_ToServer $srv" <EFBFBD>PassThru | |||
|  | if ($dismName -ne $null) { | |||
|  | $dismNamePars = $dismName -replace "\|.+" | |||
|  | $dismNamePars = $dismNamePars -replace "\s" | |||
|  | $wshell = New-Object -ComObject Wscript.Shell | |||
|  | $output = $wshell.Popup("Delete Update $dismNamePars to server $srv ?",0,"Select action",4) | |||
|  | if ($output -eq "6") { | |||
|  | icm -Session $session {$dismNamePars = $using:dismNamePars} | |||
|  | icm -Session $session {dism /Online /Remove-Package /PackageName:$dismNamePars /quiet /norestart} | |||
|  | Remove-PSSession $session | |||
|  | } | |||
|  | } | |||
|  | } | |||
|  | } else { | |||
|  | Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName $srv | |||
|  | } | |||
|  | } |