# -------------------------------------------- # SOFTWARE INSTALL / UNINSTALL HISTORY # -------------------------------------------- Write-Host "`n=== SOFTWARE INSTALLATIONEN (Registry + Store) ===`n" -ForegroundColor Cyan # --- Installationen über Registry --- $regPaths = @( "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" ) $installs = foreach ($path in $regPaths) { Get-ItemProperty $path -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -and $_.InstallDate } | Select-Object @{ Name="Date"; Expression={ try { [datetime]::ParseExact($_.InstallDate, "yyyyMMdd", $null) } catch { $null } } }, DisplayName, DisplayVersion, Publisher, UninstallString } # --- Installationen über Windows Store (AppX) --- $appx = Get-AppxPackage | Select-Object @{ Name = "Date"; Expression = { $_.InstallDate } }, Name, Version, Publisher $allInstalls = $installs + $appx | Sort-Object Date $allInstalls | Format-Table Date, DisplayName, DisplayVersion, Publisher -AutoSize # -------------------------------------------- Write-Host "`n=== SOFTWARE DEINSTALLATIONEN (Event Viewer) ===`n" -ForegroundColor Yellow # MsiInstaller Events: # 1034 = Uninstall # 11724 = Removal success # 11707 = Install success (info only) $events = Get-WinEvent -FilterHashtable @{ LogName = "Application" ProviderName = "MsiInstaller" } -ErrorAction SilentlyContinue | Where-Object { $_.Id -eq 1034 -or $_.Id -eq 11724 } | Select-Object TimeCreated, Id, Message $events | Sort-Object TimeCreated | Format-Table TimeCreated, Id, Message -Wrap -AutoSize Write-Host "`nFertig!`n"