Interaktion mit Windows

Ein kleiner Exkurs in die Interaktionsmöglichkeiten von Windows. Für IT-Interesierte und frische Systemadministratoren.

Interaktion mit Windows
Photo by Clint Patterson / Unsplash

Ein kleiner Exkurs in die Interaktionsmöglichkeiten von Windows. Für IT-Interesierte und frische Systemadministratoren.

Graphical User Interface (GUI)

Grafische Benutzeroberfläche

In den späten 1970er Jahren entwickelte das Forschungslabor Xerox PARC (Palo Alto Research Center) nach dem Ablauf ihres Patentschutzes für Fotokopierer und ihrer dadurch aufkommenden Angst, erhebliche Marktanteile an japanische Mitbewerber zu verlieren, zukunftträchtige Technologien. Die Netzwerktechnik "Ethernet" oder eine grafische Benutzeroberfläche, die mit einer Maus bedient werden konnte,sollten ihre marktbeherrschende Stellung im Bereich der Bürotechnik stärken.

Ja, der Plan ging ordentlich auf. Beide Entwicklungen sind zum Standard der Informationstechnologien geworden. Apple und Microsoft-Betriebssysteme implementierten das GUI, um Benutzerfreundlicher für Alltags-User zu werden. Die meisten User kommen nur sporadisch in die notgedrungene Situation mit ihrem Betriebssystem über die Befehlszeile zu interagieren.
Da ist eine GUI als interaktive Point-and-Click-Schnittstelle zum interagieren mit dem Betriebssystem und installieren und nutzen von Anwendungen sowie Diensten höchst hilfreich.
Die Einführung der GUI eröffnete eine breite Akzeptanz und den Zugang zu Computern in vielen Bevölkerungsgruppen. Vor allem da die Nutzer keine Programmiersprache oder Befehle auswendig lernen mussten.

Und wir Systemadministratoren nutzen GUI-basierte Systeme häufig zur Verwaltung von Active Directory, Konfigurationen von IIS oder für Interaktionen mit Datenbanken. Ist schon was feines.


Remote Desktop Protocol (RDP)

Remote Desktop Protokoll

RDP ist ein proprietäres Microsoft-Protokoll, dass dem User ermöglicht über eine Netzwerkverbindung auf ein System zugreifen zu können. Sogar mit einem GUI. Der User verbindet sich über eine RDP-Client-Software mit einem Zielsystem, auf dem eine RDP-Server-Software ausgeführt wird. Der Server verwendet für RDP-Sitzungen den Standardport 3389, um ein dedizierten Netzwerkkanal, zum Senden und Empfangen von Daten zu öffnen.

Bei der Verbindung von RDP kann der Nutzer auf die grafische Benutzeroberfläche zugreifen, als würde er tatsächlich am Computer sitzen und sich lokal anmelden. Systemadministratoren nutzen RDP häufig, um Remote-Systeme schnell zu verwalten.

RDP ermöglicht Usern auch den Zugriff auf Arbeitscomputer von zu Hause aus, oder auf Reisen, nachdem sie eine Verbindung zu einem Virtual Private Network (VPN) hergestellt haben. Homeoffice- und Telearbeiter:innen lieben diesen Trick.


Windows Command Line

Windows-Befehlszeile

Befehlzeilenschnittstellen (CLI - Command Line Interface) ermöglichen uns eine höhere Kontrolle über das System. Es unterstützt uns bei einer Vielzahl von täglichen, administrativen und fehlerbehebenden Aufgaben. Wir können das CLI verwenden, um Automatisierungen einzuführen oder bestimmte Aufgaben schneller auszuführen (beispielsweise unmengen an Benutzer auf einmal einer Domain hinzuzufügen. Domain-User händisch zu erstellen ist eine gottlose Arbeit). Auf Windows-Betriebssystemen nutzen wir die gänigen BuiltIn-Methoden:

  • Die Befehlszeile, das Command Prompt (CMD), oder auch "Eingabeaufforderung" genannt und
  • die PowerShell (es ertönt ihn euren Köpfen ein himmlischer Chor)

Windows Command Reference von Microsoft, ist eine umfassende Befehlsreferenz, von A bis Z. Sie bietet eine Übersicht, Verwendungsbeispiele und Befehlssyntaxen für die meisten Windows-Befehle. Und es ist unsere Pflicht uns damit vertraut zu machen.

Also herunterladen, im TEMP-Ordner speichern und niemals lesen:


CMD (Command Prompt)

Die Eingabeaufforderung (cmd.exe) nutzen wir um Befehle einzugeben und auszuführen. Wir können Einzelbefehle wie "ipconfig" eingeben, um IP-Adressinformationen anzuzeigen, fortgeschrittenere Aufgaben wie das Einrichten von geplanten Tasks oder das Erstellen von Skripten und Stapeldateien ausführen. Die Eingabeaufforderung können wir vom Startmenü aus öffnen, indem wir "cmd" in das Dialogfeld "Ausführen" eingeben, für ganz Faule einfach in die Adresszeile des Explorers eintippen oder das Programm direkt aus C:\Windows\system32\cmd.exe startet.

Nach dem Starten von cmd.exe können wir "help" eingeben, um eine Liste der verfügbaren Befehle anzuzeigen.

Auflistung der Befehle nach der Eingabe von "c:\Windows\system32>help"
c:\Windows\system32>help

Für mehr Informationen über einen bestimmten Befehl, geben wir

help <Befehl>

ein. (Während ich diese Zeilen schreibe funktioniert meine Markdown-Eingabe nicht, in der ich Code als solchen markieren kann. Deshalb muss die Zitat-Funktion für Code und Befehle vorübergehend herhalten.)

Ausgabe der Hilfe nach Eingabe von "c:\Windows\system32>help cd"
C:\Windows\system32>help cd

Bestimmte Befehle verfügen über eigene Hilfemenüs, die wir durch Eingabe von  /? aufrufen können.

Ausgabe der Hilfe nach Eingabe von "c:\Windows\system32>ipconfig /?"
C:\Windows\system32>ipconfig /?

PowerShell

Die Windows PowerShell ist ein von Mircosoft entwickelte CLI, um Systemadministratoren eine leistungsfähigere und interaktive Shell an die Hand zu geben. Und der Name ist Programm. Die Shell hat Power, basiert auf dem .NET Framework, das für die Entwicklung und Ausführung von Anwendungen unter Windows verwendet wird. Sie bietet zusätzlich eine leistungsstarke Skriptumgebung. Wie cmd.exe bietet uns die PowerShell direkten Zugriff auf das Dateisystem. Sogar dieBefehle der cmd-Shell lassen sich nutzen. Alles in allem ist die PowerShell ein unglaublich nützliches Tool zur Interaktion mit dem Betriebssystem und sogar Serverdiensten (sofern wir die entsprechenden Funktionen und Cmdlets nachgeladen haben).

Cmdlets?

Ja, PowerShell nutzt sogenannte Cmdlets. Kleine, einzelfunktionale Tools, die in die Shell integriert sind. Uns werden über hundert Core-Cmdlets bereitgestellt. Weitere können wir einfach bei Bedarf nachladen. Mit ihnen lassen sich komplexe Aufgaben ausführen. Sie lassen sich in Skripte nutzen und stellen für uns Systemadministratoren eine einfache Möglichkeit zur Automatisierung von Aufgaben dar.

Cmdlets haben die Form von "Verb-Nomen". Zum Beispiel kann der Befehl "Get-ChildItem" verwendet werden, um unser aktuelles Verzeichnis aufzulisten. Sie nehmen auch Arguments oder Flags an. Wenn wir "Get-ChildItem" eingeben und die Tab-Taste drücken, iterieren wir durch die Arguments. Tabben wir die Arguments durch, finden wir "Get-ChildItem -Recurse", womit wir uns den Inhalt unsers aktuellen Arbeitsverzeichnisses und aller Unterverzeichnisse anzeigen lassen.
Ein weiteres Beispiel ist der "Get-ChildItem -Path C:\Benutzer\Administrator\Dokumente" Befehlt, um den Inhalt eines anderen Verzeichnesses zu erhalten.
Wir können sogar alle Argumente kombinieren, um alle Unterverzeichnesse innerhalb eines anderen Verzeichnisses rekursiv aufzulisten:
"Get-ChildItem -Path C:\Benutzer\Administrator\Downloads -Recurse"

Ich schätze mal, das eure Vorstellungskraft das ohne Screenshots hinbekommt. Sofern noch nicht gemacht, einfach selber ausführen.

Aliases

Jetzt bin ich aber eine faule Sau und habe gar nicht die Muse jeden ellenlangen Befehl einzutippen und beim iterieren tabbe ich zu schnell, daran vorbei, verfehle danach die Shift-Taste um zurück zu gehen und befinde mich in einer typischen "AAAARRRRRGGGGHHHHH-Situation"

Let me take the Wheel

Vermutlich deswegen wurden Alias-Namen erfunden. Zum Beispiel sind die Aliase für das Cmdlet "Set-Location", um das Verzeichnis zu wechseln, entweder "cd" oder "sl". Die Aliase für "Get-ChildItem" sind "ls" und "gci". Wir können alle verfügbaren Alias-Namen anzeigen, indem wir Get-Alias eingeben.

Ausgabe der PowerShell nach Eingabe von "Get-Alias"
Get-Alias

Und dann stellt sich mein faules Hirn natürlich die Frage:

Gibt es ein Alias für "Get-Alias"?

Ich kann nicht in Worte fassen, wie glücklich mich das macht. Aber ich werde in diesem Artikel auf weitere Gifs verzichten. Und auf Werbung. Aber nicht auf Kaffee.

Diese Website läuft auf Kaffee

Spendiere HASCii einen Kaffee

Nachdem wir erfolgreich festgestellt haben, dass die Entwickler:innen von Microsoft Humor besitzten oder zumindest ähnlich denken wie ich, geht es jetzt mit einer Tasse Kaffee seriös weiter.

Und zwar mit unseren eigenen Aliasen, Aliases, Aliase, Alias... unseren eigenen Pseudonymen. "New-Alias" lautet der Befehl.

Erstellen, abrufen und entfernen des Alias "ipall"
Rise and Fall of Alias: ipall
New-Alias -Name "ipall" Get-NetIPAddress

erstellt den Alias.

Get-Alias -Name ipall

gibt aus der Liste der gespeicherten Alias den gerade erstellten "ipall" aus.

Remove-Item alias:ipall

entfernt den Alias. Dabei müssen wir beachten, dass Alias-Änderungen nur für die aktuelle PowerShell-Session gelten. Damit Änderungen dauerhaft wirken, müssen wir sie in unserem PowerShell-Profil speichern. Dazu in einem anderen Artikel mehr.

Die rote Meldung gibt nun aus, dass PowerShell den "ipall"-Alias nicht finden kann. In diesem Fall ist es für uns eine Erfolgsmeldung.

Hilfe Updaten

Die PowerShell verfügt über ein Hilfesystem für Cmdlets, Funktionen und Skripte. Standardmäßig ist es nicht installiert. Doch können wir den Befehl Get-Help <Cmdlet-Name> -Online ausführen, um die Online-Hilfe für ein Cmdlet oder eine Funktion in unserem Webbrowser zu öffnen oder Update-Help eingeben, um Hilfe-Dateien lokal herunterzuladen und zu installieren.

PowerShell Cmdlet: "get-help"
PS: get-help

Wenn die Hilfe-Dateien für das angegebene Cmdlet oder die angegebene Funktion nicht auf dem System installiert sind, wird Get-Help nur eine begrenzte Hilfe anzeigen, die nur grundlegende Informationen wie den Namen und die Syntax des Cmdlets oder der Funktion enthält.

Ohne die Hilfe-Datein finden sich nur die rudimentärsten Informationen.
Der Befehl "Update-Help" mit Admin-Rechten schafft Nachhilfe.
Das Ergebnis kann sich sehen lassen.

Sind die Hilfe-Dateien jedoch installiert, können wir mit Get-Help detailliertere Informationen zur Verwendung des Cmdlets oder der Funktion erhalten. Es ist daher empfehlenswert, die Hilfe-Dateien regelmäßig zu aktualisieren und zu installieren, um das Beste aus der PowerShell-Hilfe herauszuholen.

Also die PowerShell als Administrator ausführen, den Befehl "Help-Update" eingeben. Und nach wenigen Minuten ist das Hilfssystem der PowerShell auf dem neusten Stand. In unserem Beispiel können nun sogar unerfahrene Administratoren eindeutige Informationen über den Befehl auffinden, um ihn direkt nutzen zu können.


Ausführen von Skripten

Windows ist zusätzlich zur PowerShell, mit der PowerShell ISE (Intergrated Scripting Environment) ausgestattet. Sie ermöglicht uns, PowerShell-Skripte on-the-fly zu schreiben. Sie verfügt auch über eine Autovervollständigungs- / Suchfunktion für PowerShell-Befehle. Die PowerShell ISE elässtu uns auch Skripte in derselben Konsole schreiben und ausführen, was schnelles Debugging ermöglicht.

Wir können PowerShell-Skripte auf verschiedene Arten ausführen. Wenn wir die Funktionen kennen, können wir das Skript entweder lokal oder nach dem Laden in den Speicher mit einem Download-Cradle, dass Gegenstand eines eigenen Artikels werden wird, ausführen.

Eine gängige Methode, um mit einem Skript in PowerShell zu arbeiten, besteht darin, es zu importieren, sodass alle Funktionen innerhalb unserer aktuellen PowerShell-Konsolensitzung verfügbar sind:
"Import-Module .\PowerShellScript.ps1"
Wir können dann entweder einen Befehl starten und durch die Optionen navigieren oder Get-Module eingeben, um alle geladenen Module und ihre zugehörigen Befehle aufzulisten.


Execution-Policy

Ausführungsrichtlinien

Hin und wieder kommt es vor, das wir Gründen keine Berechtigung haben, um Skripte auf einem System auszuführen. Das liegt an einer Sicherheitsfunktion, der Ausführungsrichtlinie. Sie ist ein Sicherheitsfeature um das Ausführen von schädlichen Skripten zu verhindern. Wir unterscheiden zwischen verschiedenen Richtlinien:

Tabellarische Aufzählung und Beschreibung der Ausführungsrichtlinien.
Alle Ausführungsrichtlinien

Mit "Get-ExecutionPolicy -List" wird uns die Ausführungsrichtlinie für alle Geltungsbereiche angezeigt.

Änderung der Ausführungsrichtlinie für den Prozess-Geltungsbereich (Process-Scope)
Änderung der Ausführungsrichtlinie für den Prozess-Geltungsbereich (Process-Scope), ohne Admin-Rechte.

Die Ausführungsrichtlinie stellt keine Sicherheitskontrolle da, die Benutzeraktionen einschränken soll. User können die Richtlinie leicht umgehen,  indem der Skriptinhalt direkt in die PowerShell kopiert, das Skript heruntergeladen und aufgerufen oder es als codierter Befehl angegeben wird. Die Richtlinie kann angepasst oder geändert werden, sofern der User die Berechtigung dazu hat. Fast jeder User kann die Ausführungsrichtlinie für den aktuellen Prozess-Geltungsbereich (Process-Scope) ändern, da es keine Konfigurationsänderung erfordert, sondern nur für die Dauer der Benutzersitzung festgelegt wird.

Danke für die Aufmerksamkeit
- itger.de\HASCii