Powershell Get-Hotfix Script
Hallo Kollegen,
ich möchte die Hotfixes der Server auslesen hierzu , habe ich verschiedene Powershellscripte gefunden.
Script 1: (Funktioniert gut so sollte es aussehen, hat aber Probleme mit dem Datum (Deutsch Englisch) und zeigt so nicht alle Updates an
function Hotfixreport {
$computers = Get-Content C:\Temp\computers.txt
$ErrorActionPreference = 'Stop'
ForEach ($computer in $computers) {
try
{
Get-HotFix -cn $computer | Where-Object {$_.InstalledOn -ne $null -and [DateTime] $_.InstalledOn.ToString() -gt ((Get-Date) - (New-TimeSpan -Days 30))}
}
catch
{
Add-content $computer -path "$env:USERPROFILE\Desktop\Notreachable_Servers.txt"
}
}
}
Hotfixreport > "$env:USERPROFILE\Desktop\Hotfixreport.txt"
Script 2: (Funktioniert so wie es soll das Datum wird richtig konvertiert und erfasst somit alle Updates. Jedoch sollte hier noch der Part der txt Datei wo die zu durchzuchende Maschinen eingetragen werden und die Möglichkeit nur die Updates anzuzeigen die in den letzten x Tagen installiert wurden. Also diesen Part $computers = Get-Content C:\Temp\computers.txt und diesen Part (New-TimeSpan -Days 30)) integrieren.
Get-HotFix | Select-Object description,hotfixid,installedby,
@{l="InstalledOn";e={
[DateTime]::Parse($_.psbase.properties["installedon"].value,
$([System.Globalization.CultureInfo]::GetCultureInfo("en-US")))}}
Wäre toll wenn mich hier jemand unterstützen könnte.
Gruß Martin
ich möchte die Hotfixes der Server auslesen hierzu , habe ich verschiedene Powershellscripte gefunden.
Script 1: (Funktioniert gut so sollte es aussehen, hat aber Probleme mit dem Datum (Deutsch Englisch) und zeigt so nicht alle Updates an
function Hotfixreport {
$computers = Get-Content C:\Temp\computers.txt
$ErrorActionPreference = 'Stop'
ForEach ($computer in $computers) {
try
{
Get-HotFix -cn $computer | Where-Object {$_.InstalledOn -ne $null -and [DateTime] $_.InstalledOn.ToString() -gt ((Get-Date) - (New-TimeSpan -Days 30))}
}
catch
{
Add-content $computer -path "$env:USERPROFILE\Desktop\Notreachable_Servers.txt"
}
}
}
Hotfixreport > "$env:USERPROFILE\Desktop\Hotfixreport.txt"
Script 2: (Funktioniert so wie es soll das Datum wird richtig konvertiert und erfasst somit alle Updates. Jedoch sollte hier noch der Part der txt Datei wo die zu durchzuchende Maschinen eingetragen werden und die Möglichkeit nur die Updates anzuzeigen die in den letzten x Tagen installiert wurden. Also diesen Part $computers = Get-Content C:\Temp\computers.txt und diesen Part (New-TimeSpan -Days 30)) integrieren.
Get-HotFix | Select-Object description,hotfixid,installedby,
@{l="InstalledOn";e={
[DateTime]::Parse($_.psbase.properties["installedon"].value,
$([System.Globalization.CultureInfo]::GetCultureInfo("en-US")))}}
Wäre toll wenn mich hier jemand unterstützen könnte.
Gruß Martin
Please also mark the comments that contributed to the solution of the article
Content-Key: 284832
Url: https://administrator.de/contentid/284832
Printed on: November 30, 2023 at 01:11 o'clock
3 Comments
Latest comment

(gc .\computers.txt) | %{
$comp = $_
try{
Get-HotFix -cn $comp -EA SilentlyContinue | select CSName,description,hotfixid,installedby,@{n="InstalledOn";e={[DateTime]::Parse($_.psbase.properties["installedon"].value,$([System.Globalization.CultureInfo]::GetCultureInfo("en-US")))}} | ?{$_.InstalledOn -gt (get-date).AddDays(-30)} | ft -Autosize
}catch{
"Host $comp not reachable" | add-content .\offline.txt
}
} | out-file .\result.txt
Gruß grexit

Kürzer ... (Natürlich alle Variablen anpassen...)
Send-MailMessage -From "user@domain.de" -to "empfaenger@domain.de" -Subject "Betreff" -SmtpServer "smtp.domain.de" -Credential (New-Object PSCredential("USERNAME",(ConvertTo-SecureString 'PASSWORD' -AsPlainText -Force))) -Attachments 'C:\result.txt','C:\Offline.txt'