Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Powershell Datum der zuletzt eingespielten Patche bei remote Servern ermitteln

Mitglied: bensonhedges

bensonhedges (Level 1) - Jetzt verbinden

20.05.2019 um 12:48 Uhr, 512 Aufrufe, 18 Kommentare, 2 Danke

Hallo,

ich möchte gerne anhand einer Serverliste (bsp. computers.txt) via PS ermitteln,
wann derjeweilige Server zuletzt gepatcht wurde (Liste der installierten Patche sind nicht wichtig).

Wie bekomme ich das möglichst einfach mit Powershell-Mitteln hin?
Würde das Skript gerne mit privilegierten Rechten starten (Domänen-Admin), wie bekomme ich das ins Skript eingebaut?

Danke für Eure Tipps!

Gruß,
der Benson
Mitglied: Pjordorf
20.05.2019 um 13:07 Uhr
Hallo,

Zitat von bensonhedges:
wann derjeweilige Server zuletzt gepatcht wurde (Liste der installierten Patche sind nicht wichtig).
Das wird dir nicht zwingend weiterhelfen, aber wenn eine Maschine 6 Monate in der Ecke stand und sich jetzt ein Patch ausm letzten Jahr zog, ohne das du weisste welches Update es war, kannst du nur davon ausgehen das der Rechner Kontakt mit seinen Elter hatte.

Gruß,
Peter
Bitte warten ..
Mitglied: bensonhedges
20.05.2019 um 13:17 Uhr
Stimmt, da hast Du recht. Dann wäre es sinnvoll, per Skript zu ermitteln, welches das letzte erfolgreich installierte Update war.
Bitte warten ..
Mitglied: Pjordorf
20.05.2019 um 13:21 Uhr
Hallo,

Zitat von bensonhedges:
Stimmt, da hast Du recht. Dann wäre es sinnvoll, per Skript zu ermitteln, welches das letzte erfolgreich installierte Update war.
https://community.spiceworks.com/topic/1965305-get-windows-updates-last- ...

Gruß,
Peter
Bitte warten ..
Mitglied: bensonhedges
20.05.2019 um 13:41 Uhr
Hi Peter,

das Skript pass schon ganz gut, allerdings gibt es Probleme bei dem deutschen Datum, das wird nicht
korrekt angezeigt (Monat/Tag vertauscht):

sort : Ausnahme beim Abrufen von "InstalledOn": "Ausnahme beim Aufrufen von "Parse" mit 1 Argument(en): "Die Zeichenfolge wurde nicht als gültiges DateTime erkannt.""
In Zeile:1 Zeichen:125

... putername $_ | sort installedon)[-1] } >> C:\temp\file.txt

~~~~~~~~~~~~~~~~

Bitte warten ..
Mitglied: bensonhedges
20.05.2019 um 13:42 Uhr
Das Skript sieht aktuell so aus:

01.
Get-Content c:\temp\computers.txt  | Where {$_ -AND (Test-Connection $_ -Quiet)} | foreach { (Get-Hotfix -computername $_ | sort installedon)[-1] } >> C:\temp\file.txt
Bitte warten ..
Mitglied: Spanish
20.05.2019 um 13:52 Uhr
Hola,

Zitat von bensonhedges:
Das Skript sieht aktuell so aus:
Lass doch mal das InstalledOn ganz weg. Es gibt auch Updates die keinerlei Datum haben.

Besten Gruß,
Spanish
Bitte warten ..
Mitglied: bensonhedges
20.05.2019 um 13:55 Uhr
Hallo Spanish,

das bringt mir leider nichts, da ich ermitteln möchte, _wann_ das letzte Update auf dem jeweiligen Server
installiert worden ist.

BG,
Benson
Bitte warten ..
Mitglied: Spanish
20.05.2019 um 13:58 Uhr
Hola,

Zitat von bensonhedges:
das bringt mir leider nichts, da ich ermitteln möchte, _wann_ das letzte Update auf dem jeweiligen Server
Ich meinte ja auch nur weil du unter anderem
sort : Ausnahme beim Abrufen von "InstalledOn": "Ausnahme beim Aufrufen von "Parse" mit 1 Argument(en): "Die Zeichenfolge wurde nicht als gültiges DateTime erkannt.""
In Zeile:1 Zeichen:125
bekommst. Ich bin aber nicht der Powershellexperte.

Besten Gruß,
Spanish
Bitte warten ..
Mitglied: bensonhedges
20.05.2019 um 14:05 Uhr
Hi Peter,

danke, den Link, kenne ich ja schon, aber da steht leider nicht die Lösung zum Problem.
Das Datum wird einfach nicht korrekt ausgegeben. Ansonsten reicht die Ausgabe aus.

Gruß,
benson
Bitte warten ..
Mitglied: bensonhedges
20.05.2019 um 14:28 Uhr
Dies könnte die Lösung sein:

http://joekadev.de/powershell-abfrage-der-letzten-windows-update-instal ...

Dort wird das Datum auch korrekt ausgegeben.
Da ich in PS nicht fit bin, wie kann ich eine Schleife drumrum bauen, damit eine .txt eingelesen wird und
alle die Server einzeln geprüft werden?

Hier das Skript von joekadev.de :

01.
    # Letzte erfolgreiche Installation eines Windows Updates ueberpruefen
02.
    # www.joekadev.de
03.
    $computer = "hostname-hier"  #Lokaler/Remote Computername
04.
    Function LWUCheck {
05.
            $key = “SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install” 
06.
            $keytype = [Microsoft.Win32.RegistryHive]::LocalMachine 
07.
            $RemoteBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($keytype,$computer) 
08.
            $regKey = $RemoteBase.OpenSubKey($key) 
09.
            $KeyValue = $regkey.GetValue(”LastSuccessTime”) 
10.
            $System = (Get-Date -Format "yyyy-MM-dd hh:mm:ss")  
11.
            if ($KeyValue -lt $System) 
12.
            { 
13.
                Write-Host $computer " - " $KeyValue
14.
            }
15.
    }
16.
    LWuCheck > D:\scripte\lwucheck.txt
Bitte warten ..
Mitglied: SaschaRD
20.05.2019, aktualisiert um 15:02 Uhr
Hallo,
01.
gc c:\temp\computers.txt | ?{$_ -AND (Test-Connection $_ -Quiet)} | %{(Get-Hotfix -computername $_ | Sort InstalledOn -Descending)} >> C:\temp\file.txt
Ansonsten hilft auch Meister Google-Hupf

Nur das Datum:
01.
(Get-Hotfix | Sort InstalledOn -Descending).InstalledOn[0]
Gruß, Sascha
Bitte warten ..
Mitglied: bensonhedges
20.05.2019 um 15:39 Uhr
Hi Sascha,

danke Dir! Ich hatte ein anderes Skript gemeint, das würde mir ausreichen, nur da bekomme ich die Schleife nicht herumgebastelt

Dieses meine ich, wo ich gerne ein .txt-File einlesen möchte:

01.
    # Letzte erfolgreiche Installation eines Windows Updates ueberpruefen
02.
    # www.joekadev.de
03.
    $computer = "hostname-hier"  #Lokaler/Remote Computername
04.
    Function LWUCheck {
05.
            $key = “SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install” 
06.
            $keytype = [Microsoft.Win32.RegistryHive]::LocalMachine 
07.
            $RemoteBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($keytype,$computer) 
08.
            $regKey = $RemoteBase.OpenSubKey($key) 
09.
            $KeyValue = $regkey.GetValue(”LastSuccessTime”) 
10.
            $System = (Get-Date -Format "yyyy-MM-dd hh:mm:ss")  
11.
            if ($KeyValue -lt $System) 
12.
            { 
13.
                Write-Host $computer " - " $KeyValue
14.
            }
15.
    }
16.
    LWuCheck > D:\scripte\lwucheck.txt
Gruß,
Benson
Bitte warten ..
Mitglied: SaschaRD
21.05.2019 um 09:33 Uhr
Hallo @bensonhedges

das Einlesen von Dateien ist über Get-Content (kurz gc) möglich.
01.
$computers = gc D:\temp\hostname.txt
02.

03.
foreach ($computer in $computers){
04.
    $key = “SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install” 
05.
    $keytype = [Microsoft.Win32.RegistryHive]::LocalMachine 
06.
    $RemoteBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($keytype,$computer) 
07.
    $regKey = $RemoteBase.OpenSubKey($key) 
08.
    $KeyValue = $regkey.GetValue(”LastSuccessTime”) 
09.
    $System = (Get-Date -Format "yyyy-MM-dd hh:mm:ss")  
10.
    if ($KeyValue -lt $System) 
11.
    { 
12.
        Write-Host $computer " - " $KeyValue
13.
    }
14.
}
Dann wird das Ganze noch etwas umgestellt (Function entfernt) und mit einem hübschen Schleifchen drum herum versehen und schon initiiert diese über alle Computernamen welche sich in der Textdatei befinden.

Gruß, Sascha
Bitte warten ..
Mitglied: MarcoG
21.05.2019 um 11:02 Uhr
Ich kann dir hier nur zur einer Inventarisierungslösung wie lansweeper raten.
Damit bekommt ihr alle Maschinen auch wirklich in den Report. Mit SQL könnt ihr euch
Custom Reports bauen. Hab dazu mal was zu Windows updates geschrieben:

Vielleicht macht es dir das leichter.
https://www.protoncode.de/lansweeper-report-windows-updates/

Nein, ich bekomme von Lansweeper keine Provision ^^
Bitte warten ..
Mitglied: bensonhedges
23.05.2019 um 11:54 Uhr
Hallo Sascha,

vielen Dank für das Schleifchen

Bei mir kommt aber leider ein Fehler:

Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In Zeile:8 Zeichen:5

$KeyValue = $regkey.GetValue(”LastSuccessTime”)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: ( [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

pc0001 -
---

Hast Du eine Idee, was das sein kann. In der Hostname.txt steht ein Eintrag (pc0001).

Gruß,
benson
Bitte warten ..
Mitglied: bensonhedges
03.06.2019 um 12:37 Uhr
Kann mir jemand bei der Fehlereingrenzung helfen? Bin leider nicht so fit in Powershell..

LG,
Benson
Bitte warten ..
Mitglied: MarcoG
03.06.2019 um 15:45 Uhr
Ist $regkey initialisiert? Wenn $regkey keinen Wert hat (NULL) gibts diesen Fehler.
Bitte warten ..
Mitglied: MarcoG
LÖSUNG 03.06.2019 um 15:52 Uhr
Also ich bin mal her gegangen und hab eine Workstation in hostname.txt gelegt und bin zeile für zeile durchgegangen:

$computers = gc C:\temp\hostname.txt

#Hier spare ich mir deine Schleife und versuche das ganze mit dem ersten Objekt aus Computers
$computer = $computers[0];


$key = "SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install"
$keytype = [Microsoft.Win32.RegistryHive]::LocalMachine
$RemoteBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($keytype,$computer)

und dann kommt die erste Exception bei mir:
Ausnahme beim Aufrufen von "OpenRemoteBaseKey" mit 2 Argument(en): "Der Netzwerkpfad wurde nicht gefunden.
"
In Zeile:1 Zeichen:1

$RemoteBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($keyty ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: ( [], MethodInvocationException
+ FullyQualifiedErrorId : IOException


Danach hat $regkey einen NULL Wert weil $RemoteBase nichts zurückgibt. Musst mal schauen wo es in dieser Zeile hängt.
Die NULL-Reference Exception scheint ein folgefehler zu sein
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell Treeview Tiefe ermitteln
gelöst Frage von H41mSh1C0RBatch & Shell14 Kommentare

Hi@PS Profis, mir ist der Codeschnipsel von Uwe wieder in die in die Finger gefallen. Jetzt wollte ich parseXML ...

Microsoft

Mit Powershell Datum aus Ordnername als Datum extrahieren

gelöst Frage von YotYotMicrosoft11 Kommentare

Moin! ja, ich habe bereits gesucht und auch ein paar Fortschritte gemacht, da ich aber außerhalb von Exchange gerade ...

Batch & Shell

Powershell Monthcalendar Datum Format ändern

gelöst Frage von xpxy15Batch & Shell4 Kommentare

Hallo Zusammen Wie kann ich bei monthcalendar Windowsforms den Format ändern. Ich brauche es in dieser Format dd.mm.yyyy. Ich ...

Batch & Shell

Powershell - Windows kurzes Datum ändern

gelöst Frage von adm2015Batch & Shell4 Kommentare

Hallo, ich versuche aktuell das Windows Datumsformat (kurzes Datum) via Powershell zu ändern. Dies ist eine Einstellung welche für ...

Neue Wissensbeiträge
Microsoft
PowerShell script für LAPS
Information von kgborn vor 1 TagMicrosoft5 Kommentare

Kurzer Hinweis für Admins im AD-Umfeld. Ich bin die Tage auf das PowerShell Script der Woche “Local Administrator Password ...

Windows 10
Windows 10 bis Version 1803 und das Zwangs-Upgrade
Information von kgborn vor 1 TagWindows 10

Ich denke, die meisten Admins hier werden Systeme mit Windows 10 Enterprise einsetzen und Updates per WSUS/SCCM oder ähnlichem ...

Microsoft Office
BSI-Empfehlungen für die Office-Konfiguration
Information von kgborn vor 1 TagMicrosoft Office

Kurze Information für Admins, die Office verwalten. Das BSI hat einige Regeln für die Absicherung von Office-Konfigurationen veröffentlicht. Ich ...

Windows 10

Sandy-Bridge plus Nvidia plus Win10 1903 braucht Hotfix

Information von DerWoWusste vor 5 TagenWindows 101 Kommentar

Es gibt ein Problem in der seltenen Konstellation Nvidia-Grafikkarte/Sandy-Bridge-CPU/Win10v1903: die von Nvidia vorgeschlagenen Treiber lassen sich nicht installieren. verlinkt ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 Logonskript greift nicht
Frage von xbast1xWindows 1019 Kommentare

Hallo zusammen, da sich die per GPO gemappten Laufwerke bei allen Usern schließen und das Problem sich nicht lösen ...

SAN, NAS, DAS
SFP+ 10GB Module kompatibel?
Frage von get--4SAN, NAS, DAS18 Kommentare

Grüße euch alle, ich bin in mehreren Schulen für die EDV verantwortlich. In einer Schule haben wir eine SAN ...

Entwicklung
Welche Programmiersprache ist das?
Frage von DschingisEntwicklung17 Kommentare

Hallo zusammen, unser ERP-System ermöglicht es, eigene Ansichten zu bearbeiten. Ich würde mich hier gerne weiterbilden. Kann mir jamand ...

Batch & Shell
Powershell Skript für Reg Datei ändern
gelöst Frage von SoccerdeluxBatch & Shell16 Kommentare

Hallo zusammen, ich muss auf einem Windows 10 Pc ein Skript ausführen lassen was sich alle 5 Minuten wiederholt. ...