vSphere 7 VMware PowerCLI (v12.1+) installieren

Dies ist wieder so ein klassicher Fall von Selbst-Notiz: Nachdem ich schon wieder aus Gewohnheit das aktuellen VMware PowerCLI aus dem vMware Code Portal herunterladen wollte.

Das ist jetzt ein (NuGet) PowerShell Modul – man muss nichts mehr einzeln herunterladen. Install-Module läd das passende NuGet-Paket, sofern nicht vorhanden, auch gleich mit herunter.

PS> Install-Module -Name VMware.PowerCLI

Der native Download des NuGet-Paketes (für Offline-PCs) liegt hier:

https://psg-prod-eastus.azureedge.net/packages/vmware.powercli.12.1.0.17009493.nupkg

vCenter 6.7 Host hinzufügen schlägt fehl „Ein allgemeiner Systemfehler ist aufgetreten: Unable to push CA certificates and CRLs to host „

Das Hinzufügen eines neuen Hosts (vSphere ESX 6.7 U3) unter vCenter 6.7 schlägt mit der Meldung fehl:

Ein allgemeiner Systemfehler ist aufgetreten: Unable to push CA certificates and CRLs to host <HOSTNAME>

Lösung

Mit vSphere 6.7U3 wurde die Zertifikatssicherheit verschärft. Die Fehlermeldung ist (indirekt) darauf zurückzuführen, dass selbstsignierte Zertifikate (oder Zertifikate ohne vertraute CA) aus dem TRUSTED_ROOTS Speicher des vCenters Server beim Hinzufügen (oder Verbinden) den ESXi-Host übertragen werden sollen. Ab U3 lässt der Host das aber nicht mehr zu.

Man kann diese Verhalten aber zum Glück ändern:

  1. vSphere Host-Client des neuen hosts öffnen
  2. Verwalten -> System -> Erweiterte Einstellungen
  3. Config.HostAgent.ssl.keyStore.allowSelfSigned auf „true“ setzen

„Der ausgewählte Anschluss kann nicht entfernt werden. Dieser Vorgang wird nicht unterstützt.“ beim löschen von WSD Ports

Wenn man versucht WSD-Ports unter Windows 10 (Server 2016/2019) zu löschen, erhält man die Fehlermeldung „Der ausgewählte Anschluss kann nicht entfernt werden. Dieser Vorgang wird nicht unterstützt.“

Solange en Drucker mit dem Port verbunden ist klappt da auch mit „normalen“ Ports nicht, aber WSD-Anschlüsse lassen sich auch ungenutzt nicht entfernen.

Lösung

Erstelle einen Temporären Drucker auf genau diesem Port (Treiber egal) und lösche dann den ganzen neuen TEMP-Drucker. Der WSD-Port wird damit zusammen fehlerfrei entfernt.

Windows Server 2008R2 Windows Update Fehler 0x80092004

Windows Server 2008 R2 ist zwar schon in die Jahre gekommen, läuft aber hier und da noch und soll auch Updates bekommen. Die aktuellen Updates (zum Beispiel „2020-01 Sicherheitsupdate für .NET Framework 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 für Windows 7 und Server 2008 R2 für x64 (KB4534976)“ schlagen aber mit dem Fehler 0x80092004 fehl.

Grund ist die Signatur der aktuellen Patches. Der Fehlercode 0x80092004 steht für CRYPT_E_NOT_FOUND. Das Windows Update konnte einen kryptografischen Wert nicht verifizieren und lehnt das Update daher ab. Die besagten Pakete sind alle nur noch mit einem SHA2 Hash signiert – Windows 2008 R2 versteht aber kein SHA2.

Lösung

Manuell Installation des „Servicing stack update for Windows 7 SP1 and Windows Server 2008 R2 SP1: March 12, 2019“ (KB4490628) von:

http://www.catalog.update.microsoft.com/search.aspx?q=4490628

Sobald das Update SHA2ermöglichst, läuft die Installation der weiteren sofort fehlerfrei Updates durch.

Veeam Backup & Replication Console startet nicht (veeam.backup.shell.exe System.Xml.XmlException)

Problem

Die Veeam Backup & Replication Console startet „auf einmal“ nicht mehr. Gestern ging es noch, heute passiert (scheinbar) nichts mehr, es ist nicht einmal der Anmeldedialog zu sehen. Im Ereignisprotokoll sind nach jedem Versuch veeam.backup.shell.exe zu starten diese Fehler zu sehen:

  • Protokoll: Anwendung
  • Quelle: .NET Runtime
  • Ereignis-ID: 1026
Anwendung: veeam.backup.shell.exe
Frameworkversion: v4.0.30319
Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
Ausnahmeinformationen: System.Xml.XmlException
bei System.Xml.XmlTextReaderImpl.Throw(System.Exception)
bei System.Xml.XmlTextReaderImpl.ParseText(Int32 ByRef, Int32 ByRef, Int32 ByRef)
bei System.Xml.XmlTextReaderImpl.ParseText()
bei System.Xml.XmlTextReaderImpl.ParseElementContent()

[...]

Lösung

Warscheinlich ist nur die Benutzerkonfiguration der Konsole kaputt. Das .NET Framework ist (ausnahmsweise) da mal nicht schuld.

Es hilft das Löschen der Datei:

%USERPROFILE%\AppData\Local\Veeam_Software_Group_GmbH\veeam.backup.shell.exe_Url_hu1utqnj52thvmhrg5kie2bl15o22i22\10.0.0.0\user.config

Danach startet die Konsole sofort wieder.

TEMP-Verzeichnisse aller Benutzer (und Windows) auf einmal aufräumen

Problem

Terminalserver, oder mit der modernen Bezeichnung „RemoteDesktop Sessionhosts“, neigen trotz aller Pflege dazu nach und nach „Voll zu müllen“.

Vor allem die verschiedenen TEMP-Verzeichnisse sammeln im Laufe der Zeit (meist) unnötige Daten an. Zu den „üblichen Verdächtigen“ wie %WINDIR%\Temp und %Windows%\Prefetch gesellen sich vor allem die Benutzer-Verzeichnisse Appdata\Local\Temp\.

Lösung

Mit der PowerShell kann dieses Problem in zwei Zeilen (und einem regelmäßigen Start mit enstsprechenden Rechten) gelöst werden:

$tempfolders = @("C:\Windows\Temp\*", "C:\Windows\Prefetch\*", "C:\Users\*\Appdata\Local\Temp\*" )

Remove-Item $tempfolders -force -recurse

Die erste Zeile enthält in einem Array die entsprehenden Ordner (PS versteht auch Platzhalter wie ‚*‘), die zweite Zeile den Befehl der dafür ausgeführt wird.

Privaten Schlüssel eines Zertifikat aus dem Windows Zertifikatsspeicher exportieren der als „nicht exportierbar“ markiert ist

Manchmal findet sich ein Zertifikat im Windows-Zertifikatsspeicher (Cryptostore), welches man einschliesslich des zugehörigen privaten Schlüssel benötigt.

Beispielsweise kommt das vor bei einer Migration (IIS, Webserver), einem VPN-Service (RRAS) oder Software, die selber eine Schlüsselprüfung durchführen möchte. Windows verbietet allerdings den Export direkt aus dem Cryptostore, unabhängig von den Berechtigungen auf dem Schlüssel.

Die zugehörige Option im Zertifikatsmanager-Assistenten ist daher auch ausgegraut:

Lösung

  1. Windows Defender ausschalten
  2. mimikatz herunterladen (https://github.com/gentilkiwi/mimikatz/releases), am besten den aktuellen trunk
  3. mimikatz „Als Administrator“ ausführen

In mimikatz Ausführen:

privilege::debug

crypto::cng

crypto::capi

crypto::certificates /systemstore:local_machine /store:my /export

Die Ausgabe sollte in etwa wie folgt aussehen:

mimikatz # privilege::debug
 Privilege '20' OK

mimikatz # crypto::cng
 ERROR kull_m_patch_genericProcessOrServiceFromBuild ; kull_m_patch (0x00000000)

mimikatz # crypto::capi
Local CryptoAPI RSA CSP patched
Local CryptoAPI DSS CSP patched

mimikatz # crypto::certificates /systemstore:local_machine /store:my /export
 * System Store  : 'local_machine' (0x00020000)
 * Store         : 'my'

 0. [IIS] <CERTNAME>
    Subject  : CN=<CERT-CN>
    Issuer   : C=<CERT-DATA>
    Serial   : <CERT-SERIAL>
    Algorithm: 1.2.840.113549.1.1.1 (RSA)
    Validity : <CERT-VALID>
    Hash SHA1: <CERT-HASH>
        Key Container  : {<CNG-ID>}
        Provider       : Microsoft RSA SChannel Cryptographic Provider
        Provider type  : RSA_SCHANNEL (12)
        Type           : AT_KEYEXCHANGE (0x00000001)
        |Provider name : Microsoft RSA SChannel Cryptographic Provider
        |Key Container : {<MACHINE CNG ID>}
        |Unique name   : <CERT-NAME>
        |Implementation: CRYPT_IMPL_SOFTWARE ;
        Algorithm      : CALG_RSA_KEYX
        Key size       : 3072 (0x00000c00)
        Key permissions: 0000003b ( CRYPT_ENCRYPT ; CRYPT_DECRYPT ; CRYPT_READ ; CRYPT_WRITE ; CRYPT_MAC ; )
        Exportable key : NO
        Public export  : OK - '<PATH TO DER>'
        Private export : OK - '<PATH TO PFX>'

Und schon findet man die (alle) Zertifikate aus dem lokalen Speicher im Ausführungsverzeichnis.