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

Printed on: April 16, 2024 at 21:04 o'clock

Mitglied: 122990
122990 Oct 07, 2015 at 09:13:50 (UTC)
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
Member: u0206084
u0206084 Oct 07, 2015 at 13:40:31 (UTC)
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 Oct 07, 2015 updated at 16:10:44 (UTC)
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'