u0206084
Goto Top

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

Content-Key: 284832

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

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: 122990
122990 07.10.2015 um 11:13:50 Uhr
Goto Top
(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
Mitglied: u0206084
u0206084 07.10.2015 um 15:40:31 Uhr
Goto Top
Hallo Grexit,

vielen Dank für deine schnelle Lösung, sie Funktioniert prima.

Ich würde gerne noch die Datei an eine Mailadresse senden. Kann ich dafür die nachfolgende Syntax verwenden und an dein Script anhängen.

Vielen Dank für deine Unterstützung

{
$filename = "D:\Dateien\Zeug.zip"
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$att = new-object Net.Mail.Attachment($filename)
$SmtpClient.Host = "Inexchout.DOMAIN-Strunktur"
$mailmessage.from = "stefan.rrrrr@muster.de"
$mailmessage.To.add("stefanrrrrd@master.de")
$mailmessage.Subject = “Betreff der Nachricht”
$MailMessage.IsBodyHtml = $false
$mailmessage.Body = $body
$mailmessage.Attachments.Add($att)
$smtpclient.Send($mailmessage)
}

$body = "Irgendein Text oder der Inhalt einer Variable"

sendmail $body


Gruß Martin
Mitglied: 122990
122990 07.10.2015 aktualisiert um 18:10:44 Uhr
Goto Top
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'