Windows 10 1803/1809 Performance via PowerCfg wieder maximieren

Seit dem Update 1803 von April 2018 gibt es in der Standartmäßig aktiven Energieeinstellung „Ausbalanciert“ einige Änderungen. Viele davon sind sehr klever gewählt, einige aber weniger. Eine führt beispielsweise dazu, das die CPU nur bei längeren Leistungsanforderungen (mehrere Sekunden) in einen schnelleren Gang schaltet. Je nach Applikation ist dieses Verhalten eher suboptimal; Dinge ruckeln plötzlich oder bestimmte Vorgänge dauern einfach länger. Bekannte Vertreter dieses Verhaltens sind RAW-Tools, Filterprogramme oder Index-Sortiervoränge.

Glücklicherweise kann man aber mit der Einstellung „Ultimate Performance Mode“ die ganze volle Arbeitsgeschwindigkeit zurückbekommen.

An der Kommandozeile (PowerCFG) erstellt man eine endlich wieder sichtbare Profilkopie mit:

powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61

Da PowerCfg.exe kein PowerShell Befehl ist, reicht in diesem Fall die „als Administrator“ gestartete Eingabeaufforderung (cmd).

Danach muss man in den Energieeinstellungen nur noch den Modus „Ultimative Leistung“ auswählen.

An der Kommandozeile kann man das entsprechende Schema ebenfalls auswählen und auch alle existierenden Schemata anzeigen.

powercfg -l  // Alle Energiesparpläne Anzeigen
PowerCfg -s <GUID>  // In GUID Energiesparplan wechseln.

Maintenance Mode und „Intensivreinigung“ beim Brother MFC-J4410DW und MFC-J6930DW

Für Besitzer bestimmer Brother Druckermodelle gehört die Fehlermeldung „Drucker druckt kein Schwarz mehr“ zu einem fast jährlichen Ritual. Da der Maintenance Mode und die beiden darin enthaltenen Allheilmittel „Totalreset“ und „Intensivreinigung“ der Druckköpfe leider nicht öffentlich dokumentiert sind, gibt es hier nun die Anleitung dazu.

Bei der Umsetzung empfehlen wir Ruhe und Konzentration, denn der Wartungsmodus steht aus guten gründen nicht im Handbuch.

Maintenacne Mode / Wartungsmodus starten

  1. Auf dem Touchscreen ist der normale „Bereit“ Zustand zu sehen. Ist das nicht der Fall, den Home-Button (Häuschen-Symbol) rechts vom Display drücken.
  2. Der Home-Button leuchtet jetzt zwar nicht; diesen aber trotzdem 7 Sekunden lang drücken. Es erscheinen 4 horizontale Felder im Display.
  3. Dort das unterste und vollständig leere Feld etwa 5 Sekunden lang gedrückt halten. Im Display erscheint jetzt eine „Telefontastatur“ in einer Tabelle mit Zahlen darin.
  4. Rechts (!) auf dem Touchpad neben dem Homebutton den Maintance Code *2864 eintippen (mit Sternchen). Der Maintenance Mode startet nun, akustisch an einem Piepton wie auch im Display an der Meldung „Maintenance“ zu erkennen.

Der Wartungsmodus lässt sich jederzeit durch die Eingabe von „99“ und den daraufhin ausgelösten Neustart beenden.

Vollreset auslösen

Zuerst den Wartungsmodus starten. Dann:

  1. Rechts auf dem Nummern-Touchscreen die Zahlenfolge „01“ eintippen. Oben in der anzeige erscheint die Angabe „select 01?“
  2. Im Display unten nun den Doppelpfeil nach rechts (>>) antippen, bis in einem der Kästchen das Wort „Mono“ zu lesen ist.
  3. Auf dieses Wort „Mono“ drücken
  4. Im Display erscheint nun oben „Parameter Init“ und der der Resetprozess beginnt. das dauert eine ganze Weile.

Das war es schon, mit 99 kann der Drucker nun neu gestartet werden.

Intensive Druckkopfreinigung

Zuerst den Wartungsmodus starten. Dann:

  1. Rechts auf dem Touchscreen neben dem Homebutton „76“ eintippen, im Display oben erscheint die angabe „Cleaning All“
  2. Im Display unten rechts Doppelpfeil (>>) zweimal antippen, bis in der oberen Kästchenzeile dreieckige Pfeilsymbole zu sehen sind.
  3. In dieser Kästchenzeile den Pfeil ganz rechts antippen bis im Display oben die Farbe auftaucht wird, deren Druckkopf gereinigt werden soll. Man kann hier einzelne Druckköpfe, oder auch alle auf einmal intensiv reinigen lassen. In den meisten Fällen ist Schwarz betroffen, dafür „CLEANING BLACK“ auswählen.
  4. Rechts auf dem Touchscreen mit der Eingabe „4“ den Befehl übernehmen
  5. Oben im display sollte nun „uINIT__P [BLACK]“ (je nach Farbe) zu lesen sein.
  6. Mit dem Doppelpfeil (>>) nun so lange nach rechts tippen, bis im Display, in einem der Kästchen das Wort „Mono“ auftaucht. Mit einem Druck auf dieses wird der Vorgang gestartet. Das dauert auch wieder eine ganze Weile.

Das war es aber dann auch schon, mit 99 kann der Drucker nun neu gestartet werden. Der Maintenance-Code ist übrigens bei allen uns bekannten Brother-Geräten identisch. Bauartbeding variiert natürlich der Zugang zum Maintenance Menü.

„Diese Kopie von Microsoft Office kann auf einem Computer, der die Terminaldienste ausführt, nicht verwendet werden.“ mit Office 365 ProPlus

Trotz korrekter Terminalserver-Installation kommt es seit Ende der Jahres 2018 unter Windows Server 2016 in einer RDS-Umgebung häufiger zu diesem Fehler beim Start der Office-Anwendungen:

Diese Kopie von Microsoft Office kann auf einem Computer, der die Terminaldienste ausführt, nicht verwendet werden. Damit Microsoft Office auf einem Computer, der die Terminaldienste ausführt, verwendet werden kann, müssen Sie eine Volumenlizenzedition von Office verwenden.
Diese Kopie von Microsoft Office kann auf einem Computer, der die Terminaldienste ausführt, nicht verwendet werden. Damit Microsoft Office auf einem Computer, der die Terminaldienste ausführt, verwendet werden kann, müssen Sie eine Volumenlizenzedition von Office verwenden.

Der Inhalt dieser Meldung ist mit Office ProPlus natürlich Unsinn und nur ein Überbleibsel aus vergangenen Tagen. Office ProPlus (oder auch „O365ProPlusRetail“) dürfen durchaus in RDS-Umgebungen genutzt werden.

Eigentlich sorgt bei der Installation der Klick-und-Los Variante („setup /configure“) der Eintrag „SharedComputerLicensing“ in der XML-Datei für die richtige Konfiguration; das scheint aber nicht immer so richtig zu klappen. Vor allem unter Office 2019 (das nur Office365 heißt) ist das der Fall – vermutlich weil sich der zugehörige Registry-Schlüssel geändert hat. Früher wohnte dieser in Office\<version>\ClickToRun, nun entfällt <version>.

„Richtige“ Bereitstellungsdatei

<Configuration>
  <Add OfficeClientEdition="32" Channel="Monthly">
    <Product ID="O365ProPlusRetail">
      <Language ID="de-de" />
    </Product>
  </Add>
<Updates Enabled="TRUE" Channel="Monthly" />
<Display Level="NONE" AcceptEULA="TRUE" />
<Property Name="AUTOACTIVATE" Value="1" />
<Property Name="SharedComputerLicensing" Value="1" />  <--_HIER____
</Configuration>

Lösung

Wenn das mal wieder nicht so recht geklappt zu haen scheint, kann man den notwendigen Registry-Eintrag jederzeiot von Hand hinzufügen und schon ist Office wieder Terminalserver-Fähig.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration
   Name: SharedComputerLicensing
   Typ: REG_SZ ("Zeichenfolge")
   Inhalt: 1

Es ist kein reboot notwendig, nach einem Neustart der Anwendungen läuft Office ohne Fehler.

PowerShell Funktion um sich mit Office 365 mit MFA (Mehrfaktorauthentifizierung) zu verbinden

Der geneigte Administrator verbindet sich in der Regel fast täglich mit den Office 365 Diensten. Seit der umfassenden Einführung der MFA/2FA (Mehrfaktor-Authentifizierung) lässt sich dier Prozess nicht mehr ganz so einfach automatisieren.

Bisher reichte eine entsprechende Funktion im PowerShell Profil:

function Connect-o365 
{
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://ps.outlook.com/powershell/" -Credential $UserCredential -Authentication Basic -AllowRedirection -AllowClobber
Import-PSSession $Session
Connect-MsolService -Credential $UserCredential
}

In der schönen neuen Welt der sicheren Authentifizierung ist das nicht mehr so einfach; man benötigt überhaupt ersterinmal das entsprechende PowerShell Modul, das im Office 365 Tenant versteck ist.

Außerdem sind die ConnectionUri’s nun deutlich verteilter als früher, um eine Verbindungzu allen Services herzustellen sind nun deutlich mehr Schritte notwendig.

The Lazy Administrator“ hat sich bewundernswerter Weise diesem Problem umfassend gewidmet und eine traumhafte Funktion geschrieben, die folgende Verbidnungen unterstützt:

  • SFA und MFA (Parameter „-MFA“)
  • Exchange Online
  • Skype for Business
  • SharePoint Online
  • Security and Compliance Center
  • Azure AD v2
  • Azure AD v1 (MSOnline)
  • Microsoft Teams
  • Services einzeln oder zusammen nutzbar (Parameter „-Service“, zum Beispiel „-Service Exchange, MSOnline“)

Auf der Projektseite dazu gibt es den vollständigen Download und die zugehörige Dokumentation.

https://www.thelazyadministrator.com/2019/02/05/powershell-function-to-connect-to-all-office-365-services-with-support-for-mfa/

Ich werde die Übersicht hier nicht noch einmal wiederholen, aber großen Respekt und ein echtes Admin-Dankeschön für echten neuen Lebenskomfort an TheLazyAdmin übersenden 🙂

VMware ESXi/vCenter: Wann war eine VM das letzte mal eingeschaltet?

Manchmal ist es hilfreich zu wissen, wann ein VMware Gast zuletzt eingeschaltet gewesen ist. Es soll ja schon mal vorkommen das „tote“ virtuelle Maschinen jahrelang auf der Infrastruktur liegen aber eigentlich nicht mehr gebraucht werden.

Lösung

Es gibt keine „eingebaute“ Möglichkeit, Einschaltdaten von VMs nachzuschlagen. Am einfachsten ist es aber, das Ereignisprotokoll rückwärts nach dem letzten „Power on“ Event zu durchsuchen.

An der PowerCLI Powershell geht das beispielsweise so:

Get-VM GASTNAME | Get-VIEvent -Types Info -MaxSamples 1000 | Where-Object {$_.fullFormattedMessage -match "Power On"} | %{Write-Host $_.vm.name $_.createdTime | Out-Default}

Wobei hier „MaxSamples“ ein Beispiel ist; möglicherweise muss man mehr Events durchsuchen. Wenn man beispielsweise oft Sicherungen von Gästen via VCB erstellt, reichen 1000 Events nicht aus.

Ohne die Angabe „GASTNAME“ gibt es eine Liste aller verbundenen virtuellen Maschinen.

Office 365 Exchange Online Powershell unter Windows 10 Verbindung herstellen

Die Office 365 Exchange Online Powershell benötigt eigentlich keine Powershell Modul-Installation, weil zu Exchange nur eine Remote-Session hergestellt wird.

Anders sieht da aus, wenn man die MFA (Mehr-Faktor-Authentifizierung) eingeschaltet hat. Dazu unten mehr.

Exchange Online Powershell ohne MFA

$credential = Get-Credential
$exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $credential -Authentication "Basic" -AllowRedirection
Import-PSSession $exchangeSession -DisableNameChecking -AllowClobber

Das erste Kommando fragt die Credentials ab und speichert diese in der Variable $credential, das zweite verwendet diese für die Verbindung und das dritte importiert die Remote-Sitzung.

Exchange Online Powershell mit 2FA (Mehr-Faktor Authentifizierung)

Hierfür muss man zuerst doch noch manuell ein Modul herunterladen, das „Exchange Online Remote PowerShell-Modul„. Man findet den Download für die Offline-Installation innerhalb seines Office 365 Portals in der EAC. Mann kann diese Spezial-Powershell aber auch direkt ohne Umwege herunterladen und starten; der Link dazu steht weiter unten.

Office 365 Portal > Exchange Administrator Center (EAC) > Hybrid > „Konfigurieren“ (‚Das Exchange Online-PowerShell-Modul unterstützt mehrstufige Authentifizierung.‘)

Hat man das Modul heruntergeladen und installiert, sollte man einmal sein WinRM-Konfiguration testen. Ein lauffähiges WinRM-System mit eingeschalteter Basic-Authentifizierung (Default) ist Voraussetzung.

WinRM-Konfiguration in der Powershell „als Administrator“ anschauen:

winrm get winrm/config/client/auth

Sollte da „Basic = false“ in der Ausgabe stehen, muss man zwingend Basic-Auth einschalten:

winrm set winrm/config/client/auth @{Basic="true"}

Dann kann man auch schon endlich fast eine Verbindung herstellen; dazu das „Microsoft Exchange Online Powershell Module“ im Startmenü öffnen. Dier hier ist der direkte Download-Link zur Exchange Shell:

https://cmdletpswmodule.blob.core.windows.net/exopsmodule/Microsoft.Online.CSE.PSModule.Client.application

In der neuen Exchange-Powershell tippt man dann:

Connect-EXOPSSession -UserPrincipalName <[email protected]>

Und schon stehen einem die altbekannten CMDlets wie Get-Mailbox, Get-DistributionGroup oder Get-MailboxPermission zur Verfügung.

Office 365 Powershell Zugänge unter Windows 10 (1809+)

Nachdem der letze Beitrag zum Thema Office 365 Powershell ja mittlerweile veraltet ist, hier die aktuelle Methode eine Verbindung zu Office 365 herzustellen.

„Heute“ nutzt man direkt die AzureAD Module die man via NuGet installiert und nicht mehr die MSOnline „Extra“ Shell.

Installation des AzureAD Module (Lizenzen, Office 365 Benutzer …)

  1. Öffnen der Powershell „Als Administrator“ und das Modul installieren:
PS C:\> Install-Module -Name AzureAD

Nicht vertrauenswürdiges Repository
Sie installieren die Module aus einem nicht vertrauenswürdigen Repository. Wenn Sie diesem Repository vertrauen, ändern
 Sie dessen InstallationPolicy-Wert, indem Sie das Set-PSRepository-Cmdlet ausführen. Möchten Sie die Module von
'PSGallery' wirklich installieren?
[J] Ja  [A] Ja, alle  [N] Nein  [K] Nein, keine  [H] Anhalten  [?] Hilfe (Standard ist "N"): j
PS C:\>

2. Herstellen der Verbindung zum AzureAD (Office 365)

PS C:\> Connect-AzureAD

Account                     Environment TenantId                             TenantDomain    AccountType
-------                     ----------- --------                             ------------    -----------
<UPN>> AzureCloud  affeaffe-b00b54e0e-a0c4-a5b16ca62f5b <DOMAIN> User
PS C:\>

… fertig. Und schon kann man mit den AzureAD-CMDlets wie Get-AzureADUser, Get-AzureADUserLicenseDetail und allen anderen loslegen.

Eine Liste aller CMDlets gibt es mit:

Get-Command -Module AzureAD