Wenn Sie ein manuelle Upgrade (neues Feature-Release) von Windows 10 z.B. von einer CD ausführen, wird Ihnen die Fehlermeldung "Windows 10 kann nicht auf einem USB-Stick installiert werden" oder "You Can't Install Windows 10 on a USB Drive" ausgegeben. Es gibt offenbar mehr Ursachen für dieses Problem, aber die einzige, die mir bisher (mehrfach) un...
Weisheiten - der Netz-Weise Blog
Das Windows 10 Startmenü - ein Leiden ohne Ende. Auch mein Startmenü hat sich letzte Woche mal wieder zickig angestellt und hat jede Suche verweigert. Das ist äußert ärgerlich, da man ohne Suche einfach komplett aufgeschmissen ist - man hat dann die klassische Nadel im Heuhaufen. Das Problem lässt sich häuft auf den Windows-Suchdienst zurückführen....
Dieser Blogpost ist eine kurze Zusammenfassung von Powershell Runspaces am Beispiel eines Massenping. Ich fasse das Thema hier zusammen, weil Runspaces immer sehr mächtig und komplziert wirken, obwohl sie tatsächlich mit wenigen Zeilen Text beschrieben werden können. Das Problem: Ein Skript soll anhand einer bekannten Adresse (des Routers) herausfi...
*** Update *** Links auf die neuen Portale aktualisiert am 13.12.2022 Wenn Mails bei Ihnen nicht ankommen, könnte die Mail im Spam-Ordner gelandet sein. Es gibt aber auch eine zweite Möglichkeit, die Sie in Outlook nicht nachverfolgen können. Neben dem Outlook-eigenen Spam gibt es nämlich auch weitere Spam-Einstellungen, die direkt im Mail-System (...
Vermutlich hat es sich inzwischen herumgesprochen, dass in Skripten (egal ob Powershell, Python, Batch oder welche Sprache auch immer) keine Kennwörter im Klartext abgespeichert sein sollen. Das ist alles ganz schön, aber wie soll man dann Kennwörter und Anmeldeinformationen speichern? In Powershell gibt es hierfür einige Möglichkeiten. In diesem A...
Die Microsoft Data Protection API ist ein Feature, das Microsoft mit Windows 2000 eingeführt hat. Der Sinn der DPAPI ist es, Daten für den Benutzer transparent verschlüsselt ablegen zu können. Transparent bedeutet, dass der Benutzer von der Verschlüsselung nichts mitbekommt. Das passiert mit Hilfe der Anmeldeinformationen des Benutzers. Hier m...
Dass ein Kennwort ein generell unsichere Sache ist, haben inzwischen sogar Unternehmen wie Microsoft verstanden. Das grundsätzliche Problem von Kennwörtern ist, dass sie meist unsicher sind, oder nicht leicht zu merken. Das ist vor allem deshalb problematisch, da heute jede Website gerne eine Benutzerkonto anlegen möchte. Die Wiederverwendung von K...
Im letzten Artikel Default Shell in Server Core ändern habe ich beschrieben, wie Sie Powershell zur Default-Shell in Servercore machen können. Sie können aber auch das Tastaturlayout anpassen, wenn Sie bei der Installation die falsche Sprachversion ausgewählt haben. Hierzu passen Sie den Schlüssel HKEY_CURRENT_USER\Keyboard Layout\Preload an. Unter dem Schlüssel Preload sind die konfigurierten Tastaturlayouts gespeichert, die Servercore unterstützt, und zwar in numerischer Reihenfolge, wobei das Layout mit der Nummer 1 Priorität hat uns als erstes geladen wird.
Um das Tastaturlayout für den angmeldeten Benutzer anzupassen, setzen Sie einfach den Sprachcode Ihrer Tastatur für den Wert mit dem Namen 1. Für deutsche Tastaturen ist das 00000407. Das können Sie einfach im Regedit machen, oder mit folgender Codezeile:
Set-ItemProperty -Path HKCU:\Keyboard Layout\Preload -Name 1 -Value 00000407
Die vollständige Auflistung aller Codes finden Sie unter Default Input Profiles in Windows auf der Microsoft Website.
Wenn Sie sich in Windows Server Core einloggen, wird als Standard-Shell die Cmd.exe geöffnet. Das ist zwar unkritisch, da Sie den Server-Core im Normalfall eh nur remote konfigurieren, aber trotz allem manchmal nervig. So lange Microsoft die Standard-Shell nicht endlich auf Powershell umstellt, hilft es, die Default-Shell in der Registry anzupassen. Hierfür ersetzen Sie unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell explorer.exe durch Powershell.exe. Das geht ganz einfach über regedit, denn der Registry-Editor kann unter Server-Core direkt ausgeführt werden, oder Sie benutzen folgendes Powershell-Kommando:
Set-ItemProperty -Path HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\ -Name Winlogon -Value Powershell.exe
Die Shell wird für alle Benutzer auf den neuen Wert gesetzt, ist jetzt also der neue Default.
Wie Sie das Tastaturlayout in Server Core ändern, finden Sie unter Tastarlayout in Windows Server Core umstellen.
Eine Hashtable ist eine Schlüssel-Wertepaar-Liste zum Speichern von Konfigurationsinformationen. Solche Schlüssel-Wertepaare findet man überall, z.B. in ini-Dateien zur Konfiguration von Anwendungen. Die Windows Systemregistrierung ist nichts weiter als eine sehr große ini-Datei.
Hashtable werden in Powershell genau wie eine ini-Datei erstellt, allerdings in geschweifte Klammern eingeschlossen und mit einem @ eingeführt:
Pfad='C:\Windows'
SvcUser='netz-weise\SqlSvc'
Password='geheim'
}
Eine Hash-Table ist immer unsortiert, die Rückgabe erfolgt also in zufälliger Reihenfolge. Seit Powershell 3 kann man aber auch eine sortierte Hashtable erstellen, indem man [ordered] in der Defintion vor die Hash-Table schreibt:
Pfad='C:\Windows'
SvcUser='netz-weise\SqlSvc'
Password='geheim'
}
Wenn man so eine Hash-Table jetzt aber an einen Parameterblock übergibt und den Datentyp [Hashtable] erzwingen möchte, erhält man wieder eine unsortierte Hash-Table, da es sich bei einer sortierten Hashtable um einen eigenen Datentyp handelt und Powershell eine automatische Konvertierung durchführt.
Pfad='C:\Windows'
SvcUser='netz-weise\SqlSvc'
Password='geheim'
}
{
param(
[Hashtable]$Daten
)
$Daten
}
Das Problem besteht darin, dass eine sortierte und eine unsortierte Hashtable zwei unterschiedliche Datentypen sind. Geben Sie stattdessen [System.Collections.Specialized.OrderedDictionary] statt [Hashtable] als Datentyp an, funktioniert alles wie geschmiert. Die Funktion sieht dann so aus:
{
param(
[System.Collections.Specialized.OrderedDictionary]$Daten
)
}