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-Key: 53021965546

Url: https://administrator.de/contentid/53021965546

Printed on: April 27, 2024 at 06:04 o'clock

Member: HowardDuck
Solution HowardDuck Nov 15, 2023 at 12:19:49 (UTC)
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
Member: grmg2010
grmg2010 Nov 15, 2023 at 13:01:16 (UTC)
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.
Member: grmg2010
grmg2010 Nov 15, 2023 at 13:54:32 (UTC)
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
Member: HowardDuck
HowardDuck Nov 15, 2023 at 15:32:42 (UTC)
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
Mitglied: 8030021182
8030021182 Nov 15, 2023 updated at 15:58:00 (UTC)
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