Hallo flinki & morpheus22,
ich habe noch einmal meinen Post #24 überarbeitet, getestet und das gesamte PowerShell-Script so angepasst, so dass nun auch bei den Gerätetreiberupdates automatisch das Flag "Hidden" gesetzt wird, sofern die Funktionsaufrufe am Scriptende dieses nicht einschränken. Die Änderungen bei der Aufgabenplanung stellen sicher, dass das PowerShell-Script der Windows Update-Funktion "zuvor kommt". In der Protokolldatei "%
windir%\SoftwareDistribution\ReportingEvents.log" wird dann alles von Windows 10 dokumentiert.
1.
Windows10_Update.ps1
Function Get-WindowsUpdate {
[Cmdletbinding()]
Param()
Process {
try {
Write-Verbose "Getting Windows Update"
$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$Criteria = "IsInstalled=0 and DeploymentAction='Installation' or IsPresent=1 and DeploymentAction='Uninstallation' or IsInstalled=1 and DeploymentAction='Installation' and RebootRequired=1 or IsInstalled=0 and DeploymentAction='Uninstallation' and RebootRequired=1"
$SearchResult = $Searcher.Search($Criteria)
$SearchResult.Updates
} catch {
Write-Warning -Message "Failed to query Windows Update because $($_.Exception.Message)"
}
}
}
Function Set-WindowsHiddenUpdate {
[Cmdletbinding()]
Param(
[Parameter(ValueFromPipeline=$true,Mandatory=$true)]
[System.__ComObject[]]$Update,
[Parameter(Mandatory=$true)]
[boolean]$Hide
)
Process {
$Update | ForEach-Object -Process {
if ((($_.pstypenames)[0] -eq 'System.__ComObject#{c1c2f21a-d2f4-4902-b5c6-8a081c19a890}') -or (($_.pstypenames)[0] -eq 'System.__ComObject#{70cf5c82-8642-42bb-9dbc-0cfd263c6c4f}') -or (($_.pstypenames)[0] -eq 'System.__ComObject#{918efd1e-b5d8-4c90-8540-aeb9bdc56f9d}')) {
try {
$_.isHidden = $Hide
Write-Verbose -Message "Dealing with update $($_.Title)"
} catch {
Write-Warning -Message "Failed to perform action because $($_.Exception.Message)"
}
} else {
Write-Warning -Message "Ignoring object submitted"
}
}
}
}
Get-WindowsUpdate | Set-WindowsHiddenUpdate -Hide:$true
Get-WindowsUpdate | Where { $_.Title -match 'Definitionsupdate' } | Set-WindowsHiddenUpdate -Hide:$false
Get-WindowsUpdate | Where { $_.Title -match 'Sicherheitsupdate' } | Set-WindowsHiddenUpdate -Hide:$false
2.
Windows10_Update.cmd
@"%PSModulePath%..\powershell.exe" -ExecutionPolicy Unrestricted -File "%~dp0Windows10_Update.ps1" -NoProfile -NoLogo -Mta
3.
Windows-Aufgabenplanung (Hide Windows Updates)
Allgemein/Sicherheitsoptionen:
Benutzer: NT-AUTORITÄT\SYSTEM
[X] Mit höchsten Privilegien ausführen
Trigger:
Start nach Zeitplan: Beim Start
Wiederholen jede: 15 Minuten
Für die Dauer von: Sofort
Aktionen:
Programm starten: <Pfad>\Windows10_Update.cmd
Bedingungen:
Energie
[ ] Beenden, wenn der Computer in den Akkubetrieb wechselt
Die manuelle Freigabe der verbleibenden ausgeblendeten Updates erfolgt bei Bedarf mit dem Microsoft Problembehandlungspaket "wushowhide.diagcab" aus KB3073930 (
https://support.microsoft.com/de-de/kb/3073930).
OlliD@IRQ8