PS-Commands/Scripts/Get-Update.psm1

50 lines
1.7 KiB
PowerShell
Raw Normal View History

2023-10-14 12:06:13 +03:00
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
}
}