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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 284832
Url: https://administrator.de/contentid/284832
Ausgedruckt am: 25.11.2024 um 00:11 Uhr
3 Kommentare
Neuester Kommentar
(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'