Windows 2012 unter vSphere ohne Netz „Gigabit-Netzwerkverbindung Intel(R) 82574L Network link is disconnected.“ (Event ID 27)

Problem

An diesem Effekt hier habe ich mich grade viel zu lange aufgehalten:

Eine Windows Server 2012 Gast-VM unter vSphere 5.1/5.5 mit der Intel E1000 NIC mag auf diesem Netzwerkadapter kein stabiles Netzwerk haben. Verbindungen brechen random ab, aber Pings funktionieren hingegen meistens (eingehend). Die Verbindung läuft eine Weile, dann stirbt Sie wieder. Unabhängig von VLAN und phasikalischem Link. Stabil bleibt es dmit nie.

Es gibt beim Abbruch auch einen Eintrag im Eventlog:

Protokollname: System
Quelle:        e1iexpress
Ereignis-ID:   27
Aufgabenkategorie:Keine
Ebene:         Warnung
Schlüsselwörter:Klassisch
Beschreibung: Gigabit-Netzwerkverbindung Intel(R) 82574L
Network link is disconnected.

Lösung

Ausgelöst werden die Abbrüche durch den von Windows 2012 standardmäßig verwendeten Treiber (Intel(R) 82574L, Version: 12.0.150.0). Damit treten bei „hoher Netzwerklast“ an der VM Verbindungsfehler auf.

Möglichkeit 1: Einen neuen Ersatztreiber installieren.

Möglichkeit 2 (empfohlen): Die NIC einfach durch eine vmxnet3 ersetzten …

Active Directory: Wann hat sich ein Benutzer zuletzt angemeldet?

Problem

Wann hat sich ein Benutzer oder Konto zuletzt am Active Directory angemeldet? Die Objekt-Registerkarte im ActiveDirectory Benutzer- und Computer SnapIn ist da nicht sondelrich auskunftsfreudig.

Die Objekteigenschaft „LastLogon“ lässt sich zwar an der PowerShell mittels „Get-ADUser“ auslesen, aber nur als Large-Integer, der die Anzahl von 100-Nanosekunden-Intervallen seit dem 1.1.601 in UTC anzeigt. Leicht esoterischer Wert …

Lösung

Dieses PowerShell-Script wirft den Wert lesbar raus und funktioniert auch außerhalb von Domänencontrollern (RSAT-Tools vorausgesetzt):

Import-Module activedirectory
([DateTime][long](
     $(ForEach ($dc in ((Get-ADDomaincontroller -filter *).name)) 
        {
           (Get-ADUser -Identity "administrator" -Properties "LastLogon" -server $dc).LastLogon
        }
 ) | Measure -Maximum).Maximum).AddYears(1600)

Oder für besonders faule Admins auch als Einzeiler:

([DateTime][long]($(ForEach($dc in ((Get-ADDomaincontroller -filter *).name)){(Get-ADUser -Identity "mroelz" -Properties "LastLogon" -server $dc).LastLogon})|Measure -Maximum).Maximum).AddYears(1600)

Es geht natürlich auch via CMD, also an der klassischen Kommandozeile:

wmic NetLogin where (name like "%<USERNAME>%") get name, lastlogon

Powershell „Für jede Zeile in einer Textdatei“ … foreach Powershell Schnippsel

Weil ich JEDESMAL diesen blöden Syntax nachschaue, hier mein persönlichliches Powershell foreach-Bookmark:

[PS] C:\> foreach ( $eintrag in Get-Content .\liste.txt) { Mach-Irgendwas $eintrag }

Zum Beispiel:

[PS] C:\> foreach ( $foo in Get-Content .\liste.txt ) { Write-Host $foo }

Alternativ:

Get-Content .\liste.txt | foreach { $_ }

Ich weiss nicht warum, das bleibt einfach nicht in meinem Kopf haften. Das gute alte „for %%i in …“ hat aber auch eine ganze Weile gedauert, zugegeben.

Es gibt in der PowerShell zwei verschieden Varianten von ForEach:

  • Das ForEach-Object { … } Cmdlet
  • Die  ForEach() { … } Schleife

Beide Arten von ForEach können eingesetzt  werdenum, für jedes einzelne Objekt aus einer Menge von Objekten, etwas ausführen zu können.

  • ForEach-Object ist ein Cmdlet und wird in der Pipeline eingesetzt
  • Die ForEach() Schleife wird nicht innerhalb der Pipeline eingesetzt.

Mehr Input und Beispiele gibt es beim Peter Kriegel.

Outlook archiviert einige Elemente nicht richtig oder archviert überhaupt nicht

Problem

Obwohl in Outlook im Bereinungsungsassistenten ein Zeitraum ausgewählt ist, werden einige Elemente (E-Mails, Kalendereinträge) aus diesem Zeitraum nicht archviert.

Die Objekte werden nicht verschoben, aber in der Archiv-PST werden die passenden Ordner aus der Quellstruktur korrekt angelegt. Unabhängig davon welche Datumsgrenzen- oder Quellordner man auswählt, Outlook archiviert nicht.

Lösung

„This behaviour is by design“ – aber änderbar. Ganz leicht unverständlicherweise nutzt Outlook seit 2010 nicht dem Empfangs- oder Terminzeitpunkt für die Archivierung von Elementen, sondern das Datum der „letzten Änderung“. Dieses Datum wird selbstverständlich nicht angezeigt und kann auch nicht angezeigt werden. *ARGH*. Das Änderungsdatum bei Elementen hängt von vielen Dingen ab, zum Beispiel vom letzten Zugriff eines Exchange-Virenscanners …

Wann wird in Outlook standartmäßig archiviert?

  • E-Mail: Empfangsdatum oder Datum und Uhrzeit der letzten Änderung, je nachdem, welches später ist.
  • Kalender: Datum und Uhrzeit der letzten Änderung oder tatsächliches Datum, für das ein Termin, eine Veranstaltung oder eine Besprechung geplant ist, je nachdem, welches später ist.
  • Aufgabe: Das Abschlussdatum oder Datum und Uhrzeit der letzten Änderung, je nachdem, welches später ist. Aufgaben, die nicht als abgeschlossen gekennzeichnet sind, werden nicht archiviert. Aufgaben, die anderen Benutzern zugeordnet sind, werden nur archiviert, wenn der Status abgeschlossen ist.
  • Notiz: Datum und Uhrzeit der letzten Änderung.
  • Journaleintrag: Das Erstellungsdatum des Journaleintrags oder Datum und Uhrzeit der letzten Änderung, je nachdem, welches später ist.

Wie kann man das ändern?

Wenn man die Richtlinieneinstellung aktiviert, ignoriert Outlook das letzte Änderungsdatum und archiviert alle Elemente basierend auf:

  • E-Mail: Das Empfangsdatum
  • Kalenderelement: Das Datum für das ein Termin geplant ist.
  • Aufgabe: Das Abschlussdatum
  • Notiz: Datum der letzten Änderung
  • Journaleintrag: Erstellungsdatum des Journaleintrags

Das Verhalten von Outlook lässt sich in einer Gruppenrichtlinie anpassen:

  1. Die passenden Office Administrative Template files (ADMX) herunterladen und in der Domäne (am besten in einem Central Store) hinterlegen
  2. Diese Einstellung auf „Aktiviert“ setzen:
    Benutzerkonfiguration > Richtlinien > Administrative Vorlagen
     > Microsoft Outlook <VERSION>
      > Outlook Optionen
       > Weitere
        > AutoArchivierung
         > Ändern der Kriterien, die Outlook zum Archivieren verschiedener Elementypen verwendet

Oder via Registry-Schlüssel auf einem lokalen Outlook ändern:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Preferences]
"ArchiveIgnoreLastModifiedTime"=dword:00000001

 

 

Exchange 2013/2016 Ordner „ETLTraces“ mit ETL-Dateien wird riesig (läuft voll)

Problem

Exchange Ordner ETLTraces läuft mit ETL Dateien voll

Nach dem Update auf Exchange 2013 CU6 (oder neuer) gibt es plötzlich einen neuen Ordner in

%ProgramFiles%\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces

der riesig wird. Dort sammeln sich DocumentProcessingTrace*.etl Dateien, die auf gut 50Mbyte pro Stück anwachsen können. In einem Fall hatten sich dort etwas mehr als sieben Gbyte an Daten angesammelt, die nicht so wirklich jemandem helfen.

Das sind die Diagnose-Dateien der Exchange Volltextsuche. Man kann diese auch mit Eventviewertools öffnen und Exchange entfernt diese auch irgendwann, aber ob diese in der Zwischenzeit so viel Platz belegen müssen bleibt dem Admin überlassen.

Lösung

Glücklicherweise lässt sich das Diagnostische Tracking der Suche Konfigurieren. Sowohl der Pfad zu den Dateien, die Größe als auch die Anzahl sind in der Registry einstellbar:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\16.0\Search\Diagnostics\Tracing]
"TracingPath"="C:\\Program Files\\Microsoft\\Exchange Server\\V15\\Bin\\Search\\Ceres\\Diagnostics\\ETLTraces"
"MaxTraceFileSize"=dword:00000028
"MaxTraceFileCount"=dword:0000000a

Die Werte für „MaxTraceFileSize“ und „MaxTraceFileCount“ sind hier hexadezimal anzugeben.

Nach einer Änderung müssen die Dienste „Microsoft Exchange-Diagnose“ und „Microsoft Exchange-Suche“ einmal neu gestartet werden und schon ist man die Plage los.