Notepad++ läuft auf Windows Server Core (unter Umständen nicht mehr)

Update 27.08.2021:
Die letzte Version von Notepad++ die auf Windows Server Core (getestet habe ich mit dem 2019er Release) läuft ist Version 7.9.2. In allen darauf folgenden Versionen funktioniert eine Reihe von Dialogen nicht mehr, wie zum Beispiel das Öffnen oder Speichern von Dateien.

Ich habe darum alle mein Windows Server Core Installation mit dieser letzten Version “aktualisiert” und das Auto-Update abgeschaltet.

image

Dazu ist es ausreichend in der config.xml den Eintrag wie oben auf no zu setzen. Aktuell ist seit März 2021 auf Github auch ein Bug (Issue) offen, allerdings mit relativ wenig Aktionen dahinter.

Das Problem hängt mit der comdlg32.dll zusammen, die auf Windows Server Core nicht vorhanden ist und seit Version 7.9.3 und danach verwendet wird.

Ursprünglicher Beitrag:
Für den Windows Server Core war ich schon einige Zeit auf der Suche nach einem ordentlichen Editor um auf Dev-Systemen Scripte etc. an zu passen …

Nun hatte ich neulich auf einem neuen System, wohl mehr aus versehen, ein Paket mit Notepad++ Version 7.x installiert (den Editor nehme ich unter Windows 10 und Windows Server mit GUI) und war überrascht, dass dieser problemlos funktionierte. Ich hatte Notepad++ vor sehr langer Zeit (das kann durchaus unter Windows Server 2008 Core) getestet und aus den Augen verloren – da er dort nicht funktionierte!

image

Here we go Smile

Enjoy it, b!

Windows 10 Home, Password will never expire …

Oft bekomme ich eine Home-Edition von Windows 10 in die Finger, meistens erfolgt gleich ein Upgrade auf Windows 10 Professional da eine Mitgliedschaft in einer Domäne notwendig ist. Kürzlich war es aber mal wieder soweit und dieses System sollte auf Windows 10 Home belassen werden, damit wollte auf das in diesem Blog beschriebene Script zurück greifen, um das Passwort auf nicht ablaufend zu setzen. Bei einer Passwortlänge von 16 Zeichen, halte ich diese Einstellung für vertretbar.

Gleich vorneweg, ja das Script funktioniert nach wie vor. Mir ist aber aufgefallen, dass ich zum einen weitere Parameter für das Benutzer-Konto setzen will und darüber hinaus PowerShell das doch noch viel besser machen kann  Thumbs up Dazu muss aber mindestens die Version Windows 10 1607 oder neuer im Einsatz sein. Das Script unter der Verwendung von WMIC wurde davor entwickelt.

Aufgabe

Ein Benutzer mit dem, zugegebenen Maßen kurzem Namen “kn” soll erstellt werden. Ich mache das auf Home Systemen oder auch in kleinen Netzwerken gerne da damit der Name des Windows Benutzer Profils hinreichend kurz wird und z.B. OneDrive ein paar Zeichen mehr im Pfadnamen hat. Durch das zusätzliche Setzen eines vollen Namens, erscheint dann dieser am Anmeldebildschirm.

  1. Benutzername = kn
  2. Vollständiger Name = “Karl Napf”
  3. Passwort-Ablauf = nicht ablaufend / never expires

PowerShell Befehle

Mit dem PowerShell-Befehl New-LocalUser erfolgen. Vor dem eigentlichen Befehl, besteht die Möglichkeit das Passwort vertraulich an der Eingabeaufforderung mit Read-Host einzulesen.

Alle PowerShell-Befehle mitt in einer PowerShell-Sitzung mit erhöhten Rechten ausführen.

# Einlesen des Passworts
$Password = Read-Host -AsSecureString

# Anlegen des Benutzers
New-LocalUser -Name 'kn' -FullName 'Karl Napf' -Password $Password -PasswordNeverExpires -Description 'Karl Napf, der Erfinder der Brotsuppe'

Die Kontrolle mit net user, zeigt ein zufriedenstellendes Ergebnis.

image

Enjoy it, b!

Visual Studio Code “Convert to Lower and Upper Case”

Wenn ich “code”, nehme ich dazu fast nur noch Visual Studio Code und in seltenen Fällen auch Notepad++. In Visual Studio Code ist mir aufgefallen, dass eine Konvertierung von Textblöcken in Groß- oder Kleinschreibung nicht ohne weiteres funktioniert. Eine in Visual Studio Code immer sehr gute Idee, wenn man eine Funktion sucht, ist der Aufruf der Behelfs Palette (command palette) mit CTRL+SHIFT+P und dort die Eingabe des Suchbegriffs wie z.B. transform.

image

Trotzdem wollte ich zusätzlich einen Shortcut damit belegen, Möglich ist das in den Einstellungen für die Shortcuts (oder Tastenabkürzungen) unter Manage/ Keyboard Shortcuts. Manage ist unten links als “Zahnrad”, analog zu Windows 10 im Editor zu finden. In dem nun sich öffnenden Dialog kann man nach entsprechen Funktionen und damit verknüpften Shortcuts suchen. In der folgenden Abbildung habe ich das Wort transform eingegeben.

image

Unter Keybinding sind hier keine Shortcuts zu sehen, können aber entsprechend definiert werden. Will man nun einen Shortcut definieren, genügt ein Klick auf das vor dem jeweiligen Command (Befehl) erscheinende Plus und ein Dialog zur Belegung öffnet sich. Die Idee, eine Kovertierung auf kleine Buchstaben mit STRG+SHIFT+L und große Buchstaben STRG+SHIFT+U zu ermöglichen, was der Belegung in Visual Studio entspricht, stellte sich als schlechte Idee heraus da diese Kombination schon belegt ist.

image

Auch die in Notepad++ vorgegebene Kombination aus STRG + L war ebenfalls nicht möglich und so habe ich mich für die folgenden Kombinationen entschieden.

  • Lowercase = STRG+ALT+L
  • Uppercase = STRG+ALT+U
  • Title Case = STRG+ALT+T

image

Für Coder die generell die gleiche Belegung wie Visual Studio verwenden wollen, sei hier noch auf die Extension Visual Studio Keymap aus dem Marketplace hingewiesen oder auch die Möglichkeit Notepad++ Mappings zu verwenden.

image

Ich will es aber erstmal bei meinen Shortcuts belassen.

Happy Coding, b!

The task XML is malformed

Mit Windows Server 2012 und Windows 8, also mit PowerShell 3 kam die Möglichkeit einen Task für den Windows Task Schedular mit PowerShell zu importieren.

Register-ScheduledTask -Xml .\VM-Export.xml -TaskName "VM-Export"

Diesen Aufruf quittiert Windows anschließend mit der Fehlermeldung (The task XML is malformed).

image

Der PowerShell-Befehl Register-ScheduledTask kann die XML-Datei nicht korrekt interpretieren, eine Lösung dazu (hier reicht auch schon der genaue Blick in den Screenshot) ist die XML-Datei über den folgenden Aufruf zu lesen.

Register-ScheduledTask -Xml (Get-Content .\VM-Export.xml |Out-String) -TaskName "VM-Export"

Enjoy it, b!

Open Live Writer im Windows Store

Seit geraumer Zeit ist der Open Live Writer im Windows Store als App verfügbar und kann dort heruntergeladen werden.

image

Die im Microsoft Store verfügbare Version ist 0.6.20 und entspricht damit der aktuell unter openlivewriter.org erhältlichen Version. Ich nehme an, dass der Store die Distributionsplattform für zukünftige Updates und Releases sein wird. Was auch die Installation ohne Admin-Rechte deutlich vereinfacht, oder überhaupt erst möglich macht.

Enjoy it, b!

Password will never expire …

In Workgroups oder Zuhause ist es oft mühselig (bei den Home Editions über die GUI gar nicht möglich) das Ablaufen von Passwörtern zu deaktivieren. Neulich hatte ich das Problem, dass 20 Notebooks in einem Schulungscenter mit drei lokalen Benutzern mit ablaufenden Passwörter zu kämpfen hatten. Daher habe ich ein Script geschrieben um die Konfiguration zu automatisieren.

Eigentlich reicht es einfach das Script mit erhöhten Admin-Rechten aus zu führen. ich habe aber noch eine Möglichkeit eingebaut Accounts von dieser Änderung aus zu schließen. Diese müssen dazu lediglich in Zeile 7 eingetragen werden.

set account-filter=administrator gast guest Default

Das Script funktioniert mit Windows 7 aufwärts (darunter habe ich es nicht getestet) und ist als einfache Batch realisiert.

@echo off

:: Set-PasswordWillNeverExpire.cmd

set alog-unicode=%temp%\local-accounts-unicode.txt
set alog-ansi=%temp%\local-accounts-ansi.txt
set account-filter=gast guest Default
set alog-ansi-2beSet=%temp%\local-accounts-2beSet.txt

echo.
echo !!! Run this script as Administrator !!!
echo.

:: get local user accounts from wmi as unicode
WMIC USERACCOUNT WHERE LocalAccount='true' GET Name >%alog-unicode%
:: convert unicode to ansi
type %alog-unicode% >%alog-ansi%

:: excluding some accounts
for /f "tokens=1,* skip=1 delims= " %%a in (%alog-ansi%) do (
 
	echo %%a | findstr /v /i "%account-filter%" >>%alog-ansi-2beSet%

)

:: setting remaining accounts to never expire
for /f "tokens=1" %%a in (%alog-ansi-2beSet%) do (

	WMIC USERACCOUNT WHERE "Name='%%a'" SET PasswordExpires=FALSE

)

del %alog-unicode%
del %alog-ansi%
del %alog-ansi-2beSet%

Hier noch ein paar Hinweise zum Script:

Das Auslesen der Benutzer über das WMI erzeugt erst einmal eine Datei im Unicode Format. Mit dieser kann FOR aber nichts anfangen, wir müssen diese also nach ANSI konvertieren. Das geschieht mit einem einfachen TYPE .

type UNICODE-DATEI > ANSI-DATEI

Am Ende des Scripts werden alle erstellten Dateien wieder gelöscht, wer diese zur Dokumentation behalten will kann einfach die letzten drei Zeilen mit einem :: oder REM versehen und findet diese dann unter %TEMP%\NAME-DER-LOGDATEI.EXT.

:: del %alog-unicode%
:: del %alog-ansi%
:: del %alog-ansi-2beSet%

Enjoy it, b!