grmg2010
Goto Top

NET Framework Cumulative Updates ermitteln PowerShell

Moin,

ich bin gerade dabei die installierten Updates per PowerShell aufzulisten. Dafür nutze ich Get-HotFix. Leider bekomme ich darüber nur die Windows OS Updates, leider nicht die des .NET Frameworks.


Ich habe folgendes gefunden, um die Updates aus der Registry auszulesen How to determine which net-framework updates are installed

$DotNetVersions = Get-ChildItem HKLM:\SOFTWARE\WOW6432Node\Microsoft\Updates | Where-Object {$_.name -like
 "*.NET Framework*"}  

ForEach($Version in $DotNetVersions){

   $Updates = Get-ChildItem $Version.PSPath
    $Version.PSChildName
    ForEach ($Update in $Updates){
       $Update.PSChildName
       }
}

Allerdings unterscheiden sich die KB-Nummern der ermittelten Updates und der Updates die von Microsoft auf deren Übersichtseite zu finden sind. Ich würde daraus schließen, dass es sich um unterschiedliche Updates handelt.

Gibt es eine Funktion, die die Updates des .NET-Frameworks auflistet ähnlich wie Get-Hotfix?

Mit freundlichen Grüßen

Content-ID: 53021965546

Url: https://administrator.de/forum/net-framework-cumulative-updates-ermitteln-powershell-53021965546.html

Ausgedruckt am: 26.12.2024 um 00:12 Uhr

HowardDuck
Lösung HowardDuck 15.11.2023 um 13:19:49 Uhr
Goto Top
Mahlzeit,
auf der Site von https://www.ip-insider.de/installierte-software-updates-und-service-pack ... solltest Du alles finden.

$session = new-object -comobject „Microsoft.Update.Session“
$searcher = $session.CreateUpdateSearcher()
$history = $searcher.QueryHistory(0, $searcher.GetTotalHistoryCount())
$history | ft

Damit hast Du alle Updates.

LG HD
grmg2010
grmg2010 15.11.2023 um 14:01:16 Uhr
Goto Top
Danke, den Artikel hatte ich leider nicht gefunden. Auf den ersten Blick sieht es so aus, als ob es die Lösung ist, nach welcher ich gesucht habe.
grmg2010
grmg2010 15.11.2023 um 14:54:32 Uhr
Goto Top
Grundsätzlich funktioniert es, ich stehe lediglich bei der Weiterverwertung auf dem Schlauch. Ich kann Problemlos filtern, ob ein bestimmtes Update in der Liste zu finden ist, allerdings benötige ich davon lediglich die Anwort, ob es denn installiert ist. Also quasi nur true oder false. Das eigentliche Objekt und dessen Eigenschaften interessiert mich in dem Moment nicht
HowardDuck
HowardDuck 15.11.2023 um 16:32:42 Uhr
Goto Top
Vielleicht hilft Dir das weiter:
    $session = [activator]::CreateInstance([type]::GetTypeFromProgID(“Microsoft.Update.Session”,$ComputerName))
    $us = $session.CreateUpdateSearcher()
    $qtd = $us.GetTotalHistoryCount()
    $hot = $us.QueryHistory(0, $qtd)
    $installedKB = "KB5031224" # Hier den gesuchten KB eintragen  
    # Output object
    $OutPut = @()

    #Iterating and finding updates
    foreach($Upd in $hot){

        # 1 means in progress and 2 means succeeded
        if ($Upd.operation -eq 1 -and $Upd.resultcode -eq 2) {
        $OutPut +=  New-Object -Type PSObject -Prop @{
                ‘ComputerName’=$computername
                ‘UpdateDate’=$Upd.date
                ‘KB’=[regex]::match($Upd.Title,’KB(\d+)’)
                ‘UpdateTitle’=$Upd.title
                ‘UpdateDescription’=$Upd.Description
                ‘SupportUrl’=$Upd.SupportUrl
                ‘UpdateId’=$Upd.UpdateIdentity.UpdateId
                ‘RevisionNumber’=$Upd.UpdateIdentity.RevisionNumber
            }
        }
    }
    
    foreach ($kb in $OutPut){
    
    if($kb.KB.Value -eq $installedKB){
          write-host "Ist installiert" -ForegroundColor Green #Hier Könntest Du irgendwas weiterverarbeiten  
          }
    }
LG HD
8030021182
8030021182 15.11.2023 aktualisiert um 16:58:00 Uhr
Goto Top
allerdings benötige ich davon lediglich die Anwort, ob es denn installiert ist. Also quasi nur true oder false. Das eigentliche Objekt und dessen Eigenschaften interessiert mich in dem Moment nicht
$KB = "KBXXXXXXX"  
if ((new-object -ComObject "Microsoft.Update.Session").CreateUpdateSearcher().QueryHistory(0,[int]::MaxValue) | ?{$_.Title -match "\b$KB\b" -and $_.ResultCode -eq 2 -and $_.Operation -eq 1}){  
    "installed"  
}else{
    "not installed"  
}
Gruß Katrin