Powershell Scripts starten in der Aufgabenplanung nicht (Ergebnis 0x1)

Problem

Im Taskplaner (Aufgabenplanung) angelegte Powershell-Scripte (*.ps1) starten trotz „richtigem“ Aufruf (%System32%\WindowsPowerShell\v1.0\powershell.exe …) nicht und geben das Ergebis 0x1 zurück

Lösung

Meistens ist die ExecutionPolicy schuld. Mal ist es der 32bit-Powershell-Interpreter, dann wieder 64bit. Die Aufgabenplanung startet per Default x64, aber beide Interpreter haben eigene Policys. Es kann auch eine lokale- oder nichtlokale Profileinstellung sein oder Policy-Changes nach einem Update Es gibt viele Ursachen. Es hat sich daher bewährt, die Policy pro Script zu umgehen:

powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File \\<SERVER>\<FREIGABE>\<SCRIPT>.ps1

-NoProfile Stell sicher, das das Script ohne ein lokales Profil ausgeführt wird und somit immer „kollisionsfrei“ bleibt. Außerdem vermeidet man so den langsamen Overhead sämtlichen Profilcodes/aliases/Snipplets/Imports.
-NoLogo Lässt das Startlogo weg. Hilfreich wenn man den vollständigen Output umleitet. Und total gut fürs Admin-Gefühl.
-NonInteractive Umgeht Wartezeiten für Benutzereingaben, indem es letztere weglässt; genauer: durch ein ‚exit 100‘ ersetzt. Das Script hängt also nicht mehr bei Prompts, sondern beendt siche selbst mit dem Fehler 0x100.
-ExecutionPolicy Bypass Umgehen die lokale Executionpolicy. ‚unrestricted‘ ist natürlich ebenfalls möglich. Wir empfehlen aber ‚Bypass‘, weil das Probleme mit globalen Konfigurationsänderungen der Policys (jetzt und in Zukunft) umgeht.

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.

Maintenance 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ü.

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 🙂

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