Archiv der Kategorie: Uncategorized

Windows 10 IoT Core auf Raspberry

Falls sich bei dem Namen „Windows“ ganz konkrete Vorstellungen einstellen, sollte man sich davon bei Windows 10 IoT Core erst einmal radikal verabschieden. Etwas mehr als den Kernel bringt dieses Windows „Core“ zwar schon mit, aber es ist von einem Desktop-Windows wesentlich weiter entfernt als etwa ein Raspbian von einem Ubuntu. Unterm Strich ist Windows IoT ausschließlich für die Headless-Steuerung via Netzwerk (SSH, Web-Oberfläche, Powershell) und vorwiegend für die Entwicklung eigener Projekte konzipiert. Wir erklären hier, was mit dem System auch ohne Programmierung mit dem Entwicklerwerkzeug Visual Studio 2015 anzustellen ist und wie es sich dabei im Vergleich zu Linux verhält.

1. System-Image für den Raspberry

Bei der Image-Auswahl und Bestückung der SD-Karte muss sich Windows IoT Core schon mal einige Punkteabzüge gefallen lassen. Den diversen, bereits funktional spezialisierten Linux-Varianten für den Raspberry steht genau ein Windows gegenüber und dessen Installation ist nicht überall trivial. Eine erste Hürde ist die nicht klar kommunizierte Tatsache, dass das aktuelle „Windows 10 IoT Core Release Image“ auf dem jüngsten Raspberry 3 noch nicht läuft. Wer die Downloadseite https://ms-iot.github.io/content/en-US/Downloads.htm ganz genau liest, kann dies vermuten, weil der Raspberry Pi 3 nur unter der Vorversion „Windows 10 IoT Core Insider Preview“ namentlich aufgeführt ist. Es kann gut sein, dass demnächst die normale Hauptversion auch den neuesten Raspberry unterstützt, aber Anfang Mai 2016 war dies noch nicht der Fall und wir mussten auf die Insider Preview ausweichen. Dabei ist es aber nicht nötig, am Insider-Programm von Microsoft teilzunehmen, weil auch der bewährte NOOBS-Installer der Raspberry Foundation diese Insider Preview einrichten kann (Download unter www.raspberrypi.org/downloads/noobs). Wenn Sie den Raspberry mit NOOBS booten und dann die Option „Windows 10 IoT Core“ wählen, holt sich NOOBS die aktuellste Preview von Windows IoT aus dem Netz. Eine flotte Internetverbindung ist ratsam, weil der Download circa 1825 MB umfasst.

Wichtige Anmerkung: Beachten Sie, dass die beschriebene Einrichtung über NOOBS nicht die von Microsoft vorgesehene Installationsweise darstellt. Microsoft zielt nämlich auf eine enge Zusammenarbeit eines Windows-10-PCs mit der Raspberry-Platine. Beim Download des „Windows 10 IoT Core Release Image“ von https://ms-iot.github.io/content/en-US/Downloads.htm erhalten Sie ein ISO-Image, das Sie unter Windows 10 „Bereitstellen“ (Mounten) sollen, um anschließend die dort enthaltene MSI-Datei auszuführen. Dabei wird am Windows-Rechner das eigentliche Image (flash.ffu) entpackt, ferner zwei Hilfsprogramme eingerichtet – eines zum Schreiben des ffu-Images (IoTCoreImageHelper.exe), ein weiteres (WindowsIoTCoreWatcher.exe) zur besonders einfachen Verwaltung einer oder mehrerer Raspberry-Platinen mit Windows IoT.

Dies mag den Eindruck erwecken, dass sich ein Raspberry mit Windows IoT nur über ein Windows 10 einrichten und bedienen lasse. Das ist aber falsch: Richtig ist nur, dass die Entwicklung eigener Programmierprojekte ein Windows 10 mit Visual Studio 2015 voraussetzen. Die Nutzung und Fernwartung eines Raspberry mit Windows Core funktioniert hingegen auch ohne diese Hilfsprogramme und ohne Windows-PC.

Hinweis zur Hardware: Der WLAN-Chip auf dem neuen Raspberry 3 wird von der Windows IoT Insider Preview nicht erkannt. Dieses Manko kann bei Erscheinen dieses Heft eventuell behoben sein. Wann genau das der Fall sein wird, das lässt sich der vagen Aussage „coming soon“ auf http://ms-iot.github.io nicht entnehmen.

Überflüssiges Tool unter Windows: Der „Core Watcher“ wird am PC automatisch installiert, wenn Windows IoT via Windows auf SD-Karte geschrieben wird

2. Erster Start: Was läuft auf dem Raspberry?

Falls am Raspberry Monitor und Maus angeschlossen sind, erscheint nach dem Start eine einfache Oberfläche, die nur eine wesentliche Information anbietet, nämlich die lokale IP-Adresse. Über das Zahnradsymbol ist nicht mehr zu erreichen als die Einstellung der Sprache. Der Punkt „Lernprogramme“ gibt auch nicht viel her. Generell ist die hübsche, aber praktisch funktionslose Oberfläche entbehrlich bis nutzlos. Der Raspberry mit Windows IoT wird komplett über das Netzwerk verwaltet.

Bei den automatisch gestarteten Standarddiensten hat Microsoft nichts Wesentliches ausgelassen. Das System und die Dateien auf dem System sind auf viele Wege zu erreichen:

* Der SSH-Server läuft. Der Raspberry ist von jedem Client-System via ssh administrator@192.168.0.22 (Beispiel) und dem Standardkennwort „p@ssw0rd“ erreichbar (Zahl 0 statt Buchstabe o!).

* Der Web-Server läuft: Die Verwaltungsoberfläche des Raspberry ist von jedem Client-System im Browser über http://192.168.0.22:8080 erreichbar (Beispiel). Die Standardauthentifizierung lautet wieder „Administrator“ und Kennwort „p@ssw0rd“

* Der FTP-Server läuft: Der Raspberry ist von jedem Client-System via FTP über seine IP-Adresse erreichbar. Hier ist der anonyme Zugriff ohne Authentifizierung vorgesehen. Freigegeben ist standardmäßig das Systemlaufwerk (C:\).

* Der Lanmanserver läuft: Spezielle Freigaben sind per SSH leicht einzurichten, die dann von jedem Client-System erreichbar sind. Sofort ab Installation, also ohne jede Einrichtung, sind die typischen administrativen Standardfreigaben (C$, D$) erreichbar – allerdings nur mit Windows-Clients.

* Das Windows Remote Management läuft: Somit kommen Windows-Client auch über die Windows Powershell an den Raspberry, die mehr Möglichkeiten bietet als die normale Kommandozeile Cmd (die bei SSH-Verbindung startet).

* Wer Windows IoT über einen Windows-10-Rechner installiert hat, erhält auf diesem Rechner zusätzlich den schon genannten „Windows IoT Core Watcher“ als Hilfsprogramm: Der spürt Raspberry-Platinen mit Windows IoT im lokalen Netz auf und bietet per Rechtsklick deren Verwaltungsoberfläche und die administrativen Datenfreigaben. Das Tool ist aber vollständig entbehrlich, wenn der Raspberry mit fester IP über ein Browser-Lesezeichen und die Datenfreigaben im Dateimanager des PCs zu erreichen sind.

Die von Microsoft vorgesehene Installationsweise von Windows IoT: Hier ist ein Windows-Rechner notwendig, der mit einem speziellen Flash-Tool ausgestattet wird.

3. Windows IoT im praktischen Einsatz

Die ersten Maßnahmen auf einem Windows IoT unterscheiden sich nicht grundsätzlich von einem Linux-System auf dem Raspberry: Eine der wichtigsten Aktionen ist ein feste IP-Adresse für das Gerät, was Sie am besten zentral im Router erledigen. Damit ist das System per SSH oder Browser zuverlässig zu erreichen. Ob der Zugriff dann unter Linux mit (Beispiel)

ssh administrator@192.168.0.22

oder mit Putty/Kitty unter Windows erfolgt, spielt keine Rolle.

Zu empfehlen ist ferner ein individuelles Kennwort für das „Administrator“-Konto (vergleichbar mit root unter Linux). Dies kann der Befehl

net user administrator meinkennwort

auf der SSH-Konsole erledigen, ist aber auch auf der Verwaltungsoberfläche unter „Home -> Preferencies“ vorgesehen. An gleicher Stelle können Sie auch den Standard-Hostnamen „minwinpc“ individuell einstellen.

Windows IoT kann mit oder ohne Bildschirmoberfläche („headed“ oder „headless“) gestartet werden. Falls Sie kein eigenes Projekt planen, das eine Bildschirmausgabe vorsieht: Die Standardoberfläche des Systems und ein am Raspberry angeschlossener Bildschirm sind reichlich nutzlos. Für die Abschaltung gibt es ein Extra-Programm:

setbootoption.exe headless

Dies und ein Reboot schaltet die Oberfläche ab und bringt etwa 60 MB zusätzlichen Speicher (der Parameter „headed“ schaltet die Oberfläche jederzeit wieder ein). Einen Reboot lösen Sie am bequemsten über die gleichnamige Schaltfläche in der Verwaltungsoberfläche aus, aber natürlich funktioniert auch ein shutdown /r /t 0 auf der SSH-Konsole.

Neben dem überall funktionierenden SSH-Zugriff gibt es unter Windows auch noch den Remote-Zugang via Powershell (Beispiel):

net start WinRM
Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.0.22
Enter-PSSession -ComputerName 192.168.0.22 -Credential 192.168.0.22\Administrator

Die zweite Befehlszeile ist nur ein einziges Mal notwendig, um den Raspberry dem Windows-PC bekannt zu machen. Der erste Befehl ist nur einmal innerhalb einer Windows-Sitzung notwendig. Für die Eingabe des Kennworts nach dem dritten Befehl erscheint dann ein grafischer Dialog.

Die Verwaltungsoberfläche liefert unter „Processes“ und „Performance“ einen guten Überblick über die Systemauslastung und über laufende Tasks, die sich hier auch beenden lassen. Ohne Monitorausgabe („headless“) sollte das pure Standardsystem deutlich unter 200 MB liegen. Bei Aufgaben als einfacher Datenserver liegt die CPU-Last bei 10 bis maximal 30 Prozent. Das sind Werte, die auch ein schlanker Debian-Server nicht signifikant unterbieten kann.

Auf der Seite „Processes“ lassen sich unter „Run command“ einzelne Kommandozeilen direkt übergeben, ohne dafür eine SSH- oder Powershell-Verbindung aufbauen zu müssen. Wenn es sich um einen Befehl des Kommandointerpreters Cmd handeln soll, muss dies in der Form „cmd /c [Befehl]“ erfolgen.

Wenn Sie beim Systemstart automatisch Programme starten (oder beenden) oder Umgebungsvariablen setzen wollen, nutzen Sie vorzugsweise die Datei IoTStartupOnBoot.cmd unter \Windows\System32. Diese wird, wie der Name anzeigt, beim Start automatisch berücksichtigt.

Nur für Windows-Clients: Die Powershell kann sich am Raspberry anmelden und bietet etwas mehr Kommandozeilenkomfort als eine SSH-Verbindung (auf die Cmd-Shell).

4. Einrichtung eines einfachen Datenservers

Die Rolle eines einfachen lokalen Datenservers kann Windows IoT problemlos und mit sehr geringem Konfigurationsaufwand übernehmen. Dazu eignen sich externe USB-Geräte an den vier verfügbaren Ports. USB-Datenträger sind „hot plugable“, werden also im laufenden Betrieb gemountet – in aufsteigender Reihe der Windows-typischen Laufwerksbuchstaben. Um ein komplettes USB-Laufwerk E: für das Standardkonto „Administrator“ freizugeben, genügt ein einziger Befehl (Beispiel):

net share USB_2TB=e:\ /grant:administrator,full

Weitere Konten sind etwa mit

net user /add Sepp geheim

schnell eingerichtet und Netzfreigaben analog dem obigen Befehl zu gestatten, nur mit geändertem Kontonamen. Für die Korrektur eventuell fehlender lokaler Rechte auf Datenträgern ist das Tool icacls.exe an Bord.

Der FTP-Server, der standardmäßig Laufwerk C: anbietet, kann jeden beliebigen Pfad per FTP freigeben. Es genügt, den Dienst zunächst mit

kill ftpd*

zu beenden und dann mit der gewünschten Pfadangabe neu zu starten (Beispiel):

start c:\windows\system32\ftpd.exe e:\daten

Es gibt aber offenbar keine Möglichkeit, den FTP-Server auf ein bestimmtes Konto zu beschränken. Eine Öffnung für den Internet-Zugriff via Portfreigabe scheidet daher aus Sicherheitsgründen aus, und für den Zugriff im lokalen Netz reichen an sich die normalen Freigaben aus.

5. Windows IoT: Ohne Eigenentwicklung geht nicht viel

Die voranstehenden Abschnitte zeigen, dass Windows IoT auf dem Raspberry wesentliche Dienste automatisch mitbringt und mit etwas Erfahrung auf der Windows-Kommandozeile (Cmd) oder der Windows-Powershell gut übers Netzwerk zu verwalten ist – und zwar nicht nur über Windows, sondern auch über Linux oder Mac OS X (SSH und Browser). Alltagstaugliche Einsatzmöglichkeiten, wie wir sie von Linux-Systemen wie Raspbian, Open Media Vault, Openelec und zahlloser Software wie Kodi, Plex, Owncloud, Mediawiki kennen, sind aber nicht annähernd in Sicht. Die skizzierte Einrichtung als lokaler Datenserver (Punkt 4) ist das einzige alltagstaugliche Szenario, das sich mit dem purem Windows-IoT-System umstandslos realisieren lässt. Batch-Frickler können sich mit den angebotenen Kommandozeilen-Tools unter \Windows\System32 und dem Cron-ähnlichen Scheduler Schtasks sicher noch einige zusätzliche Komfortfunktionen hinzubasteln. Ein Hemmschuh ist dabei, dass nicht einmal ein Texteditor an Bord ist und somit Änderungen an Batch- oder Konfigurationsdateien immer über die Freigaben am Remote-PC erfolgen müssen.

Über diese engen Grenzen hinaus führt nur die Entwicklung eigener Programmierprojekte. Hier steht man allerdings mit einem Linux-Rechner komplett außen vor. Die Entwicklung benötigt einen Windows-10-Rechner mit Visual Studio 2015 (wobei aber die kostenlose Community-Edition ausreicht: www.visualstudio.com/de-de/downloads). Selbst Nutzer, die nur das eine oder andere schon existierende Beispielprojekt auf ihrem Raspberry ausprobieren wollen, kommen nur mit Hilfe von Windows ans Ziel: Die überall verfügbare Verwaltungsoberfläche im Browser sieht zwar unter „Apps -> Install package“ das Laden von Projekten auf den Raspberry vor, dazu müssen diese aber als Appx-Pakete vorliegen, was wiederum Visual Studio oder zumindest das Windows-Tool Makeappx erfordert.

Ist auf einem Windows-10-PC Visual Studio installiert, ist der Transport von Projekten auf den Raspberry hingegen recht einfach: Die Sammlung mit den Demo-Projekten unter https://github.com/ms-iot/samples lässt sich mit der Schaltfläche „Download ZIP“ rechts oben komplett herunterladen. Nach dem Entpacken des Archivs genügt ein Doppelklick auf die SLN-Datei des gewünschten Projekts, der das verknüpfte Visual Studio startet und dort automatisch den Debug-Modus und die ARM-Systemarchitektur einstellt (in der Tool-Leiste oben). Daneben muss dann nur noch unter „Device“ die Option „Remotecomputer“ gewählt werden, wobei der Raspberry erkannt und automatisch angeboten wird und ein Klick auf „Auswählen“ das Ziel festlegt. Danach genügt „Erstellen -> [Projektname] erstellen“ zum Kompilieren des Projekt und anschließendes „Erstellen -> [Projektname] bereitstellen“, um das Projekt auf den Raspberry zu befördern. Die Verwaltungsoberfläche zeigt unter „Apps -> Installed Apps“ alle Projekte in einer Dropdown-Liste an. Das jeweils ausgewählte starten Sie dort mit der Schaltfläche „Start“ oder löschen es wieder mit der Schaltfläche „Remove“.

Die meisten der bislang vorliegenden Projekte haben Demo-Charakter, um die technischen Möglichkeiten und den zuständigen Programmcode anzuzeigen. Praxistaugliche und für größere Zielgruppen zu empfehlende Lösungen sind bislang nicht in Sicht.

Leistungsmonitor der Verwaltungsoberfläche: Das Mini-Windows erweist sich als ökonomische Basis für den Raspberry. Hier läuft ein Datentransfer; CPU und RAM zeigen noch viel Reserven.

Windows-Software unter Linux: Wine und PlayOnLinux

Wine ist bekanntlich ein Nachbau der Windows-API unter Linux, der eine Vielzahl von Windows-Programmen unter Linux lauffähig macht. Wo immer dies möglich ist, ist dies der direktere Weg gegenüber einer Virtualisierungslösung.

Über Wine und sein komfortables Frontend PlayOnLinux allgemeingültige, praxisnahe technische Anleitungen zu liefern, ist nicht ganz einfach: Streng genommen kann man immer nur das erfolgreiche Einrichten genau eines Windows-Programms erklären. Bei der nächsten Software kann sich der Vorgang schon wieder deutlich unterscheiden, und einen dritten Kandidaten überreden auch trickreiche Nachbesserungen nicht zur Zusammenarbeit. Dieser Artikel kann daher nur die Grundregeln beschreiben.

playonllinux und wine
Winecfg und PlayOnLinux: Hinter dem Frontend bleibt Winecfg (rechts) das maßgebliche Konfigurationstool, das unter anderem festlegt, welche Laufwerke die Windows-Software „sieht“.

Zum Verhältnis Wine und PlayOnLinux

Wine („Wine Is Not an Emulator“) stellt die eigentliche Laufzeitumgebung und Windows-API (Application Programming Interface) bereit und basiert auf mühevoller Rekonstruktion des nicht offenen Windows-Quellcodes durch Experimentieren und Reverse-Engineering. Aufgrund dieser Arbeitsweise ist die von Wine angebotene Windows-API auch nach über 20 Jahren der Entwicklung immer noch lückenhaft, aber inzwischen ausreichend für viele und zum Teil auch komplexe Windows-Programme und –Spiele wie Photoshop oder Halflife. Welche Windows-Software unter Wine zuverlässig läuft, zeigt die Datenbank http://appdb.winehq.org. Linux-Nutzer mit wenig Erfahrung sollten sich an die Kategorien „Platin“ und „Gold“ halten, alle anderen Einstufungen erfordern manuelles Nachbessern.

PlayOnLinux ist im Prinzip nur ein zusätzliches Konfigurationswerkzeug für Wine. Aber es vereinfacht Installationen von Software und bietet vor allem eine komfortable Verwaltung für mehrere Wine-Versionen auf einem Rechner. Es ist nämlich leider keineswegs so, dass die aktuellste Wine-Version auch die beste für jede Windows-Software darstellt. Vielmehr gibt es vor allem für ältere Software ältere Wine-Versionen, welche die optimalen Bedingungen garantieren.

Mit PlayOnLinux nimmt zwar die Wine-Komplexität weiter zu, dennoch gehen wir nachfolgend davon aus, dass Sie Wine in Kombination mit diesem grafischen Frontend nutzen. Ursprüngliches Ziel des Frontends war es, populäre Windows-Spiele besonders komfortabel lauffähig zu machen – daher der Name des Tools. Heute hat Playonlinux aber auch Windows-Programme wie Microsoft Office oder Dreamweaver im Repertoire.

Der Installationsdialog von PlayOnLinux
Der Installationsdialog von PlayOnLinux

Installation über PlayOnLinux

Obwohl es unter den Distributionen auch einige Ausnahmen gibt: In den meisten Fällen sind die Pakete Wine und PlayOnLinux nicht vorinstalliert, weil sie relativ viel Platz beanspruchen und die installierbaren Live-Systeme um circa 200 MB anwachsen ließen. Unter Debian, Ubuntu, Mint und Varianten installiert der Befehl

sudo apt-get install playonlinux curl p7zip-full

alle notwendigen Komponenten. Beachten Sie, dass PlayOnLinux ein aktuelles Wine automatisch mitbringt. Beim Verfassen dieses Beitrags handelte es sich unter Ubuntu um Wine 1.7.12. PlayOnLinux ist aktuell bei Version 4.2.5, bei der Installation über die Ubuntu-Repositories erhalten Sie derzeit Version 4.2.2.

Bei der Installation gibt es unter einigen Distributionen eine irritierende Bremse: Es erscheint ein Textfenster „Konfiguriere ttf-mscorefonts-installer“. Es handelt sich um die EULA (End User License Agreement) für einige Windows-Truetype-Standardschriften, die Sie bestätigen sollen. Allerdings lässt sich das „OK“ in diesem Textfenster nicht direkt mit Eingabetaste erreichen. Vielmehr müssen Sie erst mit der Tab-Taste das „OK“ aktivieren, um den Vorgang mit Eingabetaste fortsetzen zu können.

Vor dem Start von PlayOnLinux sollten Sie erst winecfg aufrufen, am einfachsten via Terminal. Beim Start dieses Konfigurationstools werden oft noch fehlende Komponenten angemahnt und die automatische Nachinstallation angeboten. Außerdem können Sie vorab festlegen, welche Laufwerke die Windows-Software nutzen darf. Erst danach starten Sie PlayOnLinux über das Startmenü oder das Dash. Nach diesen Aktionen sind bereits wichtige Ordnerstrukturen und virtuelle Laufwerke angelegt. Sie finden im home-Verzeichnis den versteckten Ordner ~/.PlayOnLinux/wineprefix, der die virtuellen Laufwerke für alle späteren Installationen aufnimmt.

Exkurs: Neueste Versionen

Wenn es die allerneueste Wine-Version sein soll, gibt es für Ubuntu und Mint ein alternatives PPA mit jüngsten Entwicklerversionen. Dafür nehmen Sie in der Kommandozeile das PPA auf und installieren dann die aktuellste Version:

sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get install wine1.7

die neueste verfügbare Wine-Version.

Auch PlayOnLinux bieten die meisten Repositories nicht in der aktuellsten Version. Diese lautet bei Redaktionsschluss 4.2.5, während etwa Ubuntu die Version 4.2.2 installiert. Die jeweils aktuellste Version erhalten Sie mit diesen vier Befehlen:

wget -q "http://deb.playonlinux.com/public.gpg" -O- | sudo apt-key add -
sudo wget http://deb.playonlinux.com/playonlinux_trusty.list -O /etc/apt/sources.list.d/playonlinux.list

sudo apt-get update

sudo apt-get install playonlinux

Anleitungen zur Installation unter anderen Distributionen bietet die Webseite https://www.playonlinux.com/en/download.html.

Beachten Sie jedoch, dass die Entwicklung bei Wine zwar stetig, aber langsam voranschreitet. Die Notwendigkeit ganz aktueller Versionen ergibt sich nur dann, wenn Sie genau wissen, dass die gewünschte Windows-Software die neueste Wine-Version unbedingt voraussetzt.

Setup mit dem normalen Installationsmedium: Der PlayOnLinux-Assistent fragt nach dem Setup-Medium oder der gemounteten ISO-Datei.
Setup mit dem normalen Installationsmedium: Der PlayOnLinux-Assistent fragt nach dem Setup-Medium oder der gemounteten ISO-Datei.

Varianten der Software-Installation

Nach dem Aufruf vom Playonlinux klicken Sie zunächst auf „Datei -> Installieren“. Das damit geöffnete Installationsmenü zeigt zahlreiche Windows-Programme und Spiele, für die es bewährte Installations-Scripts gibt. Mit der Auswahl und dem Klick auf „Installieren“ einer dieser Software-Vorgaben sind Sie auf einer relativ sicheren Seite. „Relativ sicher“ deswegen, weil sich beispielsweise eine genau analysierte Software wie ein Microsoft Office standardmäßig problemlos installieren lässt, das Setup jedoch scheitert, wenn man versucht, eine benutzerdefinierte Auswahl der Komponenten zu treffen.

In den meisten Fällen benötigen Sie ein reguläres Installationsmedium, also CD/DVD oder auch eine ISO-Datei, die Sie am besten schon vorher über „Öffnen mit -> Einhängen von Laufwerksabbildern“ gemountet haben. Bei frei verfügbarer Open-Source-Software fragt PlayOnLinux nach keinem Installationsmedium, sondern lädt die Dateien aus dem Internet und installiert automatisch. Das bei der Installation neu entstehende Wine-Prefix und auch das zugehörige Verzeichnis unter ~/.PlayOnLinux/wineprefix erhält jeweils den Namen der Software.

Die manuelle Setup-Variante: Ist die gewünschte Software in den Vorgaben unter „Datei -> Installieren“ nicht enthalten, können Sie folgenden Weg versuchen: Im Installationsdialog klicken Sie auf ganz unten auf „Installiere ein Programm, das nicht aufgelistet ist“. Damit startet die manuelle Installation, bei der Sie die Option „Installiere ein Programm in einem neuen virtuellen Laufwerk“ anklicken und für die neue Umgebung einen Namen vergeben. Den nächsten Dialog überspringen Sie mit „Weiter“, sofern Sie mit den dortigen Optionen nichts anfangen können. Wenn die Aufforderung „Bitte wähle die Installationsdatei…“ erscheint, navigieren Sie mit „Durchsuchen“ zur gewünschten Setup-Datei. Ob die Installation funktioniert und anschließend auch die Software, muss der Versuch zeigen.

Manuelle Kopie portabler Software: Portable Windows-Programme benötigen bekanntlich keine Installation. Mit solcher Software lässt es sich besonders einfach experimentieren: Kopieren Sie in eine bereits existierende Laufzeitumgebung unter ~/.PlayOnLinux/wineprefix/[Name]/drive_c/Program Files beliebige portable Programme einfach mit dem Dateimanager. Danach gehen Sie im Hauptdialog von Playonlinux auf „Konfigurieren“ und markieren den Namen der betreffenden Laufzeitumgebung. Nun erscheint die Schaltfläche „Lege eine neue Verknüpfung dieses virtuellen Laufwerks an“, die eine Suche nach ausführbaren Windows-Executables (*.exe) startet. Hier klicken Sie auf die gewünschte Programmdatei und auf „Weiter“. Dadurch entsteht ein neuer Programmeintrag im Hauptdialog von PlayOnLinux, zusätzlich auch noch eine Desktop-Verknüpfung.

Ob das portable Programm dann tatsächlich läuft, erweist sich nach Klick auf „Ausführen“ im Hauptdialog. Der Erfolg ist ungewiss, aber Sie können in einem einzigen Wine-Prefix durch schlichtes Kopieren in den virtuellen Programme-Ordner Dutzende von Programmen ausprobieren. Bei kleineren Tools und einfachen Spielen stehen die Chancen generell gut.

Oft unproblematische portable Software: Viele Windows-Programme sind nach schlichtem Kopieren in den virtuellen Programme-Ordner sofort startklar.
Oft unproblematische portable Software: Viele Windows-Programme sind nach schlichtem Kopieren in den virtuellen Programme-Ordner sofort startklar.

Ergebnis aller Installationsvarianten: Für jede Software ist immer eine bestimmte Wine-Version zuständig. Bei den Programmen, die der Installationsdialog anbietet, holt PlayOnLinux automatisch die passende Wine-Version mit an Bord. Bei manuellen Installationen arbeitet normalerweise die Default-Version des Betriebssystems. Einmal installierte Programme erscheinen im Hauptdialog von PlayOnLinux und lassen sich dort „Ausführen“, „Debuggen“, „Deinstallieren“ und genauer „Konfigurieren“. Eine komplette Prefix-Umgebung können Sie unter „Konfigurieren -> Entfernen“ wieder löschen. Falls dies nicht klappt, löschen Sie einfach den betreffenden Ordner unter ~/.PlayOnLinux/wineprefix.

Hauptdialog von PlayOnLinux nach erfolgten Installationen: Die rechte Spalte bietet die Links für alle Aktionen wie das Starten, Debuggen oder detaillierteres Konfigurieren.
Hauptdialog von PlayOnLinux nach erfolgten Installationen: Die rechte Spalte bietet die Links für alle Aktionen wie das Starten, Debuggen oder detaillierteres Konfigurieren.

Debugging und Experimente

Wine bietet eine erstaunlich zuverlässige Basis der Windows-API, kann aber natürlich nicht die zahllosen Spezialitäten berücksichtigen, wie sie Tausende von Windows-Programmen voraussetzen. Das beginnt bei harmlosen Registry-Einträgen und geht bis zu speziellen DLL-Versionen, .Net- oder DirectX-Versionen. Bei besonders prominenter Software ist der Ehrgeiz der Community groß, diesen Spezialitäten mit genau recherchierten Installations-Scripts Rechnung zu tragen. Bei weniger prominenter Software ist Wine die solide Basis, die aber oft erst durch eigenes Experimentieren zum Erfolg führt: Wenn ein Windows-Programm nach der Installation nicht läuft, bedeutet das nicht, dass es prinzipiell nicht funktioniert. Wer einerseits die Struktur von PlayOnLinux verstanden hat, andererseits einige Windows-Kenntnisse mitbringt, hat gute Chancen, eine störrische Software durch Experimentierten zur Arbeit zu bewegen:

Jedes installierte Programm lässt sich im PlayOnLinux-Hauptdialog markieren, danach auf der rechten Seite mit dem Link „Ausführen“ starten. Wenn dies nicht funktioniert, starten Sie das Programm an gleicher Stelle mit dem Link „Debug“, um das Debug-Logfile anzuzeigen. Das Logfile nennt die Probleme deutlich beim Namen– etwa „Library XYZ.DLL not found…“. Allgemeine Windows-Komponenten wie DirectX und .Net lassen sich über den Link „Konfigurieren“ unter der Registerkarte „Installiere Komponenten“ genau für dieses Programm nachrüsten. Wenn aber – wie im obigen Beispiel – ganz spezielle, fehlende DLL-Dateien genannt werden, hilft nur eines: Kopieren Sie die fehlenden Dateien von einer parallelen Windows-Installation manuell nach Linux. Zielordner ist dann entweder ~/.PlayOnLinux/wineprefix/[Prefix-Name]/drive_c/windows/system32 oder direkt das Programmverzeichnis ~/.PlayOnLinux/wineprefix/[Prefix-Name]/drive_c/Program Files/[Programm].

Wenn Sie die DLL-Dateien unter System32 ablegen, starten Sie dann in PlayOnLinux über „Konfigurieren -> Wine -> Wine konfigurieren“ das Tool winecfg, um dort unter „Bibliotheken -> Neue Überschreibung für“ die gewünschte Bibliothek auszuwählen. Mit „Festlegen“ erstellen Sie eine neue Regel, die Sie mit „Bearbeiten“ ändern. Mit der Einstellung „Native“ nutzt Wine dann die manuell kopierte, originale Windows-DLL im virtuellen System32-Ordner statt der eingebauten Wine-Bibliothek (Builtin).

native dlls
Windows-Bibliotheken manuell ersetzen: Wenn Programme laut Debug-Meldung originale Windows-DLLs fordern, kopieren Sie diese und teilen das winecfg mit.

Was für fehlende Komponenten gilt, gilt ähnlich auch für fehlende Informationen in der Windows-Registry. Diese liegt in Form der beiden Dateien system.reg und user.reg im Basisverzeichnis des jeweiligen Wine-Prefix – also unter ~/.PlayOnLinux/wineprefix/[Prefix-Name]. Theoretisch können Sie diese Dateien manuell bearbeiten, was für eine Handvoll Zeilen sicher noch praktikabel ist. Es gibt aber einen wesentlich komfortableren Weg: Auch hier benötigen Sie wieder ein Windows-Referenz-System, auf dem die betreffende Software fehlerlos läuft. Dort nutzen Sie den Registry-Editor Regedit und suchen den Hauptschlüssel der Software auf – typischer Weise [Hkey_Current_User\Software\[Programmname]. Nach Rechtsklick und „Exportieren“ wählen Sie als Ausgabeformat „Win9x-/NT-Registrierungsdateien“ und einen sprechenden Dateinamen.

Diese Exportdatei lässt sich dann bequem in die Registry auf dem Linux-System importieren. Dazu markieren Sie im Hauptdialog von PlayOnLinux das maßgebliche Programm und klicken dann in der rechten Spalte auf den Link „Konfigurieren“, dann auf die Registerkarte „Wine“. Hier finden Sie die Schaltfläche „Registrierungseditor“. Der entspricht exakt jenem unter Windows, und mit „Registry -> Registry importieren“ holen Sie die vorher erstellte Reg-Datei in die Registry Ihres Wine-Prefixes.

Dateizuordnungen festlegen

Wie der Hauptdialog von PlayOnLinux unter „Einstellungen -> Dateizuordnungen“ verspricht, lassen sich Dateitypen anhand ihrer Extension mit einem Wine-Windows-Programm verknüpfen. Ziel ist es, mit einem Doppelklick im Linux-Dateimanager direkt die passende Windows-Software zu laden.

Legen Sie unter „Dateizuordnungen“ mit der Schaltfläche „Neu“ einen neuen Eintrag an. Ein Beispiel wäre etwa die Extension „.xlsx“, falls Sie diese mit Microsoft Excel verknüpfen wollen. Danach klappen Sie neben „Zugewiesenes Programm“ die Drop-Down-Liste der möglichen Wine-Programme auf, wählen das gewünschte Excel und klicken auf „Anwenden“. Damit haben Sie PlayOnLinux darüber informiert, dass es für die Extension „.xlsx“ eine Standardanwendung gibt, der Linux-Dateimanager weiß davon allerdings noch nichts.

Wie der Dateimanager am besten zu informieren ist, darüber finden Sie im Web einige halbrichtige Anleitungen. Nach unserer Erfahrung (mit Nautilus unter Ubuntu und Nemo unter Mint) ist der sicherste Weg folgender: Sie gehen im Terminal mit cd zu einem Verzeichnis, das eine Datei mit der gewünschten Extension enthält. Dort geben Sie nach mimeopen –d den Dateinamen an:

mimeopen –d [Dateiname.ext]

Geben Sie dann die Ziffer ein, die vor „Other“ steht. Damit weisen Sie dem Dateityp unabhängig von bisherigen Vorgaben ein neues Standardprogramm zu. Neben „use command:“ geben Sie jetzt einfach den Befehl „playonlinux“ ein. Damit gibt der Dateimanager die Verantwortung für diesen Typ an PlayOnLinux weiter und dieses weiß wiederum aufgrund der vorher getätigten Dateizuordnung, was es starten soll.

Im letzten Schritt klicken Sie jetzt im Dateimanager eine beliebige Datei dieses Typs rechts an und wählen „Eigenschaften -> Öffnen mit“. Dort sollte jetzt unter anderem auch der Eintrag „playonlinux“ auftauchen, den Sie mit Klick auf die gleichnamige Schaltfläche „Als Vorgabe festlegen“.

mimeopen
Windows-Programm als Standardanwendung: Das Einrichten fordert mehrere (drei) Schritte – hier der Zwischenschritt mit der Umleitung zu PlayOnLinux.

Everything, exFAT und das Script Linker.vbs

Kennen Sie das glückliche Tool mit dem unglücklichen Namen Everything?
Sie sollten es kennen, denn es ist die unbestritten schnellste Software für die Dateisuche überhaupt und kostenlose Freeware unter Windows (Projektseite, FAQ und Download unter www.voidtools.com).

Suchtool Everything
Suchtool Everything

Eine nähere Beschreibung von Everything erspare ich mir (die einfache Suchsyntax wäre durchaus einige Zeilen wert), denn hier geht es um etwas anderes. Nur so viel: Everything ist eine reine Suche nach Dateiattributen – also nach Namen, Pfad, eventuell noch Erstelldatum. Bei diesem Job erscheinen ihm aber auch Dateimengen im Millionenbereich ein Klacks: Auch aus solchen Massen filtert es in Zehntelsekunden bei Eingabe in das Instant-Search-Suchfeld die passenden Dateien.

Nun funktioniert Everything allerdings ausschließlich auf NTFS-formatierten Partitionen. Das war mir zwar klar, dachte aber nicht daran, als ich meine große Musik-, Bilder- und Texte-Sammlung auf eine neue 2-TB-USB-Festplatte kopierte, die mit exFAT formatiert war. exFAT war eine bewußte Wahl, weil ich mich in diesem Fall nicht mit Benutzerrechten herumärgern wollte, falls die Platte mal an einen anderen Rechner gehängt wird.

Klar, als Everything später die exFAT-Platte erst gar nicht „sah“, wusste ich sofort warum. Aber jetzt war es zu spät – oder doch nicht? Ich hatte da mal vor langer Zeit ein kleines VB-Script gebastelt, das komplette Ordnerstrukturen einschließlich Verzeichnisse und Dateien an anderer Stelle verlinkt. Das war dann auch – mit Hilfe von Everything – auf meiner Systemplatte schnell gefunden (Download Linker.zip).

Damit habe ich dann den kompletten Inhalt meines Medienarchivs auf der exFAT-Platte zur NTFS-Systempartition verlinkt. Somit habe ich jetzt alles wie gewünscht: Medien ohne Benutzerrechte auf exFAT, die ich dennoch mit dem rasenden Everything durchforsten kann. Einziger Komfortnachteil: Wenn sich in meinem Medienarchiv viel Neues tut, muss ich gelegentlich wieder das Script Linker.vbs laufen lassen.

Linker.vbs zeigt zweimal einen BrowseForFolder-Dialog – erst zur Angabe des Quellordners und dann zur Wahl des Zielordners. Am Ende des Vorgangs (der kann je nach Datenmenge mehrere Minuten dauern) erscheint eine Abschlussmeldung, eine Fortschrittsanzeige gibt es nicht.

Linker
Linker.vbs bei der Auswahl der Datenquelle…

Noch eine Anmerkung: Mit Linker.vbs lassen sich natürlich auch Netzwerk-Ressourcen auf NTFS verlinken. Damit gelangen auch Netzlaufwerke in den Wahrnehmungshorizont der Everything-Suche…

Noch eine Anmerkung: Linker.vbs kann Quell- und Zielordner auch als Parameter übernehmen, etwa nach dem Aufrufmuster
cscript linker.vbs x:\Archiv c:\Tools
Damit lässt sich die periodische Verlinkung eines Ordners komplett automatisieren.

Browser im Kiosk-Modus

Sie möchten Kunden oder Familienangehörigen Zugang ins Web bieten, aber möglichst so, dass diese an System und Browser nichts ändern können? Der Artikel zeigt, wie weit Sie Firefox und Chrome bei dieser Aufgabenstellung bringen.

Unter einem Kiosk-System versteht man strenggenommen ein öffentliches Terminal mit inhaltlich sehr eingeschränkten Funktionen. Der Kiosk-Modus im Web-Browser hat aber nicht die Aufgabe, das Web inhaltlich zu filtern oder gar auf eine Site zu reduzieren. Es geht hier schlicht darum, die Surfer vom Betriebssystem fernzuhalten, und zwar möglichst ohne Wartungs- und Erklärungsaufwand.

Internet pur: Der Browser zeigt das Web und sonst nichts. Adresszeile, Navigation und Browser-eigene Einstellungen entfallen ebenso wie der Zugriff auf das System.
Internet pur: Der Browser zeigt das Web und sonst nichts. Adresszeile, Navigation und Browser-eigene Einstellungen entfallen ebenso wie der Zugriff auf das System.

1. Kiosk-Modus für Chrome/Chromium

Google Chrome und sein Open-Source-Ableger Chromium bieten unter Hunderten und größtenteils undokumentierten Startparametern auch einen für den Kiosk-Start:

google-chrome --user-data-dir=/home/%username%/TEMP --kiosk google.de

Wesentlich ist der Parameter „—kiosk“, die Angabe des User-Verzeichnisses sorgt zusätzlich für eine komplett autarke Chrome-Sitzung. Die an Schluss angegebene Seite erscheint im Vollbild ohne Adresszeile, Titelleiste, Menü, Navigationselemente und Lesezeichenleiste. Die Ansicht lässt sich im Unterschied zum normalen Vollbild nicht mit Taste F11 abschalten. Allerdings gibt es für den Chrome-Kiosk-Modus Einschränkungen, die unter -> Punkt 3 genannt werden.

Exkurs App-Verknüpfungen: Für einen gewissen Schutz vor unkontrollierter Internet-Nutzung durch Kinder oder gelegentliche Mitbenutzer bietet Chrome eine besonders einfache Option. Über das Menü „Tools –> Erstellen von App-Verknüpfungen“ legt Chrome Web-Seiten als Links wahlweise am Desktop oder im Programm-Menü ab, die er ohne Bedienelemente und vor allem ohne Adresszeile darstellt. Solche Verknüpfungen etwa zu den Kindersuchmaschinen http://blindekuh.de oder www.fragfinn.de bieten jede Menge kindgerechtes Internet – und führen erst mal nicht darüber hinaus. Eine wirksame Abschottung zum übrigen Internet sind solche App-Verknüpfungen natürlich nur mit Websites, die nur interne Links verwenden. Eine Abschottung des Systems ist mit App-Verknüpfungen nicht zu erreichen.

2. Besserer Kiosk-Modus für den Firefox

Der Mozilla-Browser hat keinen Startparameter für den Kiosk-Modus, aber es gibt die Erweiterung R-Kiosk 0.9.0 für Linux und Windows. Verwenden Sie das Firefox-Menü und „Add-ons“ und dort „Add-ons suchen“, um „R-Kiosk“ zu installieren. Die Erweiterung wird dann beim nächsten Browser-Start aktiv. Legen Sie vor diesem Browser-Start unter „Einstellungen -> Allgemein -> Startseite“ jene Start-Adresse, die Ihre Surfer als Ausgangspunkt nutzen dürfen – etwa http://www.google.de. Beachten Sie, dass R-Kiosk keine Navigation erlaubt: Wenn ein Surfer über Google auf eine abgelegene Seite gelangt, gibt es scheinbar keinen Weg zurück. Sie sollten Ihrer Firefox-Surfstation daher den klaren Hinweis aufkleben, dass die Tastenkombination Alt-Pos1 (Alt-Home) zur Startseite zurückführt. Das ist zwar Standard, aber keineswegs jedem geläufig.

Firefox mit R-Kiosk ist dem Kiosk-Modus von Chrome deutlich überlegen wie am Ende von -> Punkt 3 kurz skizziert. Beachten Sie aber, dass ein einmal installiertes R-Kiosk nicht so ohne weiteres zu beseitigen ist: Der radikale Weg ist es, unter /home/[user]/.mozilla/firefox das gesamte Profil zu löschen, also das Verzeichnis mit der Erweiterung „.default“. Sanfter ist es, mit dem abgesicherten Modus von Firefox Erweiterungen und Plug-ins vorübergehend abzuschalten. Dazu starten Sie den Browser mit diesem Kommando im Terminal:

firefox -safe-mode
Dann finden über das Menü „Add-ons“ unter anderem das deaktivierte R-kiosk und können es dort dauerhaft „Deaktivieren“ oder sogar „Entfernen“.

Der beste Kiosk-Modus mit reinen Browser-Mitteln: Firefox plus R-Kiosk-Erweiterung ist für diese Aufgabe dem Google-Browser klar vorzuziehen.
Der beste Kiosk-Modus mit reinen Browser-Mitteln: Firefox plus R-Kiosk-Erweiterung ist für diese Aufgabe dem Google-Browser klar vorzuziehen.

3. Nachbesserungen und Einschränkungen

Zahlreiche System-Hotkeys machen es leicht, absichtlich oder zufällig den Vollbild-Browser zu verlassen und Zugriff auf das Linux-System zu gewinnen. Daher sollten sämtliche Vorgaben konsequent abgeschaltet werden. Unter Ubuntu und Linux Mint geht das recht bequem unter „Systemeinstellungen -> Tastatur -> Tastaturkürzel“, indem Sie Einträge markieren und mit der Rücktaste die Hotkeys jeweils auf „Deaktiviert“ setzen. Die Hotkeys Alt-Tab und Umschalt-Alt-Tab sind hier nicht aufgeführt, sollten aber ebenfalls ausgeschaltet werden. Das erledigen Sie am elegantesten, indem Sie ihnen eine Dummy-Aktion zuweisen – etwa unter „Ton und Medien“ die Aktionen „Vorheriger Titel“ und „Nächster Titel“. Damit wird die normale Funktion dieser Hotkeys als Taskswitcher durch die selbstdefinierten Aktionen überdeckt und funktionslos.

Damit Sie als Administrator nicht selbst im Vollbild-Browser gefangen sind, vergeben Sie in der Kategorie „Starter“ ein bereits vorgegebenes Programm mit einem möglichst ungewöhnlichen Hotkey. Als Beispiel könnte etwa „Terminal starten“ mit Umschalt-Win-Rücktaste belegt werden, was Linux als „Umschalt-Super-Löschen“ einträgt. Dieser Hotkey lädt dann bei Bedarf das grafische Terminal und befördert dabei immer auch das Hauptpanel und unter Ubuntu die Starterleiste zu Tage, womit Sie vollen Zugang zum System erhalten.

Mit diesen Zusatzmaßnahmen ist der Browser, jedenfalls der Firefox, ein ziemlich stabiles Gefängnis für normale Anwender. Chrome kann insofern nicht mithalten, weil er im Kiosk-Modus ein großes Scheunentor offenlässt – den Rechtsklick auf URLs: Sobald man das Angebot „Link in neuem Fenster öffnen“ annimmt, hat man einen normalen Chrome im Fenstermodus vor sich und zudem den Linux-Desktop mit allen Elementen.

Exkurs Windows: Unter Windows würde es den Einsatz eines Tools wie Autohotkey erfordern, um die System-Hotkeys zu überdecken und damit zu deaktivieren. Deutlich einfacher ist es, vor dem Browser-Start im Kiosk-Modus den Explorer zu beenden, der für fast alle Hotkeys verantwortlich ist. Bleibt aber der System-Hotkey Strg-Alt-Del: Der ist durch keine Maßnahme abzufangen und bietet den Aufruf des Task-Managers an. Damit hat ein fortgeschrittener Nutzer das System in der Hand, und somit ist Windows für diese Aufgabe unterm Strich nicht geeignet.

4. Der Kiosk-Modus und das Fazit

Die Möglichkeiten, welche Chrome/Chromium mit Startparameter anbieten, vor allem aber der Firefox mit der Erweiterung R-kiosk bereitstellt, reichen ziemlich weit und sollten genügen, etwa einen Familien-PC oder eine Surfstation in einem übersichtlichen Laden oder einem Café hinreichend abzusichern. Der große Vorteil eines Firefox mit R-Kiosk ist es, dass sich das jeweilige Gerät für den Administrator ohne Umstände sofort wieder uneingeschränkt nutzen lässt.

Wenn eine Surfstation über Wochen und Monate unbeaufsichtigt und wartungsfrei funktionieren soll und auch mit destruktiv gesinnten Nutzern fertig werden muss, ist der Kiosk-Modus aber ungenügend. In solchen Fällen empfiehlt sich ein Linux-Live-System, das erstens immer jungfräulich bootet und zweitens am besten schon als Surfstation spezialisiert ist. Aktueller Favorit für diesen Job ist Porteus 3.0 (http://build.porteus.org, auch auf Heft-DVD), das es übrigens auch in einer restriktiven Kiosk-Variante mit Firefox pur gibt (http://porteus-kiosk.org). Siehe dazu auch den Beitrag in diesem Blog: Surfsystem Porteus.

Netzwerk-Tools (LAN und Web)

Arp.exe – LAN-Tool für das Address Resolution Protocol
ARP ist das Vermittlungsprotokoll zwischen IP-Adressen und physikalischen MAC-Adressen. Das Address Resolution Protocol speichert IPs und zugehörige MAC-Adresse in einer Vermittlungstabelle. „Arp -a“ zeigt die derzeitige Tabelle an, „arp -s [IP-Adresse] [MAC-Adresse]“ kann einen statischen Eintrag erzwingen. Dies wird bisweilen von Sicherheitsexperten empfohlen. Im Heimnetz gibt es keinen Grund einzugreifen und Arp.exe überhaupt zu benutzen. Eine statische Zuordnung von IP- und MAC-Adressen kann auch nur dort funktionieren, wo statische IP-Adressen vergeben sind.
____________________________________________________________

FTP.exe – Web-Tool für FTP-Server
FTP ist für den interaktiven Zugriff auf FTP-Server heutzutage überflüssig, da es weit komfortablere Möglichkeiten gibt (Filezilla, Total Commander, Wget, Windows-Explorer). Microsoft schleppt das alte Tool dennoch mit bis in neueste Windows-Versionen (Windows 8), weil es nach wie vor unzählige Batch-Dateien gibt, die auf der Script-Fähigkeit von FTP.exe basieren:

ftp -s:%temp%\ftp.txt

startet FTP.exe und lädt mit dem Schalter „-s:“ die erforderlichen Befehle (etwa „open“, Username, Kennwort, „put“, „get“, „cd“…) aus einer Textdatei (in unserem Beispiel „ftp.txt“).
____________________________________________________________

Getmac.exe – Info-Tool für LAN-Konfiguration
Das kleine Programm liefert schnell die eindeutige(n) physikalische(n)  MAC-Adresse(n) des oder der im PC vorhandenen LAN-Adapter – am besten mit „getmac -v“, das auch Adapternamen anzeigt. MAC-Adressen werden manchmal als Sicherheitsmaßnahme für die MAC-Filterung im Router genutzt. Getmac ist aber weitestgehend entbehrlich, weil etwa Ipconfig die MAC-Adresse ebenfalls ermittelt.


____________________________________________________________

Ipconfig.exe – Info-Tool für LAN-Konfiguration
„ipconfig /all“ ist eines der beliebtesten Info-Kommandos für Administratoren. Es liefert für alle LAN-Adapter die IP-Adresse des Geräts, die IP-Adresse des Gateways, die MAC-Adresse, den Adapternamen, die DHCP-Konfiguration. Ipconfig kann ferner – bei IP-Konflikten – die IP-Adresse trennen oder eine neue IP-Adresse (vom DHCP-Server) anfordern

ipconfig /release
ipconfig /renew

oder den lokalen Cache für die Domain-Namen (DNS-Cache) anzeigen oder löschen:

ipconfig /displaydns
ipconfig /flushdns

Letzteres ist etwa sinnvoll, wenn für eine Internet-Site eine Domain-Umleitung eingerichtet wurde.
____________________________________________________________

Net.exe – Tool für LAN-Einstellungen und Benutzerverwaltung
Net ist mit zahlreichen Haupt-und Unterschaltern ein wichtiges Tool mit einem breiten Funktionsumfang. Trotz des Programmnamens sind echte Netzwerk-Befehle nur eine Untermenge von Net.exe, mehr als die Hälfte des Befehlsumfangs zielt auf die User-Verwaltung des lokalen Rechners. So weist etwa folgender Befehl dem Standardkonto „Administrator“ ein neues Kennwort zu:

net user administrator secreT-123

Weitere Hauptbefehle neben „net user…“, die zur User-Verwaltung dienen, lauten „net accounts…“, „net group…“ und „net localgroup…“.

Die wichtigsten der eigentlichen Netzwerk-Befehle lauten:
„net config server | workstation…“ (Parameter für Server- und Workstation-Rolle)
„net share…“ (Ordnerfreigaben per Kommandozeile)
„net statistics server | workstation“ (Sende/Empfangs-Analyse)
„net use…“ (Netzlaufwerk verbinden)
„net view…“ (Anzeige der Netzwerkserver)
____________________________________________________________

Netsh.exe – Netzwerk-Konfigurations-Shell
Netsh ist ein umfangreiches Analyse- und Konfigurationswerkzeug für alle Netzwerkprotokolle, IP-, Firewall- und Remote-Einstellungen. Eignet sich zur Script-gesteuerten Konfiguration von Arbeitsrechnern in einem größeren Netzwerk (Admin-Tool).
Es folgen einige einfachere Beispiele, die auch normalen Windows-Anwendern weiterhelfen können:

TCP/IP-Konfiguration anzeigen (ähnlich wie Ipconfig /all):
netsh interface ip show config

TCP/IP-Konfiguration in Datei speichern:
netsh.exe interface ip dump >dump.txt

Gespeicherte TCP/IP-Konfiguration aus Datei in das System importieren:
netsh -f dump.txt

Windows-Firewall komplett zurücksetzen (nur nach irreparabler Firewall-Verkonfiguration):
netsh firewall reset

Netzwerkadapter deaktivieren und wieder aktivieren:
netsh interface set interface "LAN-Verbindung" disabled
netsh interface set interface "LAN-Verbindung" enabled

TCP/IP-Konfiguration komplett zurücksetzen (nur in verzweifelten Notfällen!):
netsh interface ip reset [logfile]
Der Befehl schreibt die Registry-Schlüssel
Hkey_Local_Machine\System\CurrentControlSet\Services\Tcpip\Parameters\
Hkey_Local_Machine\System\CurrentControlSet\Services\DHCP\Parameters\
neu. Sie müssen am Ende der Kommandozeile ein Logfile angeben, in welches Netsh Ihre aktuelle Konfiguration speichert.

Alle bislang genutzten WLAN-Netze protokollieren und als XML-Datei ausgeben:
netsh wlan export profile
____________________________________________________________

Netstat.exe – Web- und LAN-Verbindungsanalyse
Netstat analysiert abhängig von den angegebenen Parametern summarisch oder detailliert alle Netzwerkverbindungen. Wer den Verdacht hat, dass der Rechner unerwünschte Internetverbindungen herstellt, kommt an diesem nützlichen Analyse-Werkzeug nicht vorbei. Die auch für unerfahrene User empfehlenswerte Schalterkombination (beide Varianten gehen)

netstat -b -v
netstat -bv

zeigt zu den aktiven Verbindungen auch den Prozessnamen, also etwa den Browser-Namen. Die meines Erachtens informativste Ausgabe leistet folgende Schalterkombination:

netstat -abo

Netzwerkadministratoren verwenden Netstat für Dauerprotokolle: Eine Intervallangabe nach der gewünschten Parameterkombination wiederholt das Protokoll im abgegebenen Sekundenintervall:

netstat -f 40

Die Anzeige der Verbindungen wiederholt sich alle 40 Sekunden.
____________________________________________________________

Nslookup.exe – Web-Server- und DNS-Analyse
Das aus der Unix-Welt nach Windows übernommene Kommandozeilen-Tool liefert die umfangreichsten Informationen über Web-Sites: Name Server, Mailserver, Hosting und mehr. Das Programm zeigt seine Fähigkeiten erst im interaktiven Modus, nach Aufruf von „nslookup“ und nachfolgender Anfrage „help“ oder „?“.
Im interaktiven Modus erscheinen nach (Beispiel)

set type=all
microsoft.com

alle Infos zur angegebenen Site.

Die Abfrage lässt sich durch „type=“ einschränken („type=mx“ auf Mail-Server, „type=ns“ auf die Domain Name Servers, „type=a“ auf IP-Adressen.
Nslookup ist unzugänglich und schlecht kommentiert, aber zuverlässiger als manche Alternativen (etwa Nirsoft’s DNSDataView).
____________________________________________________________

Openfiles.exe – LAN-Tool für Netzfreigaben
Das Kommandozeilen-Tool ist für Normalanwender entbehrlich, weil die Konsole für Netzfreigaben (Fsmgmt.msc) dieselben Funktionen bequemer anbietet. Auf der Kommandozeile leistet „net file“ ähnliches.
Openfiles zeigt nach „openfiles /query“ die aktuell geöffneten Dateien auf den Netzwerkfreigaben des lokalen Rechners. Das Tool kann dies auch auf anderen Netzwerkrechnern analysieren, sofern dort Administratorrechte bestehen.
Nach
openfiles /local on
kann das Programm auch die Dateien anzeigen, die am PC vom System und vom lokalen User geöffnet sind (also ohne Netzwerkzugriff).
____________________________________________________________

Pathping.exe – Web-Tool zur Routenverfolgung
Pathping entspricht weitgehend Tracert und liefert alle Vermittlungsseiten mit Name und IP bis zur angegebenen Ziel-Site – etwa:

pathping wikipedia.de

Pathping analysiert etwas genauer als Tracert, sofern es verlorene Pakete auf dem Vermittlungsweg anzeigt. Die Pathping-Analyse kann helfen, Leistungseinbrüche oder Zugriffsprobleme bei einer bestimmten Web-Seite zu erklären. Sie kann theoretisch auch Betrugsversuche entlarven.
____________________________________________________________

Ping.exe – Web- und LAN-Tool zur Erreichbarkeitskontrolle
Ping mit nachfolgender Angabe eines Geräts im internen LAN oder einer Web-Site im externen WAN zeigt umgehend, ob Rechner oder Site online und verfügbar ist. Ping ist ferner nützlich, um aus dem Rechnernamen im LAN oder aus dem Domain-Namen im Web die zugehörige IP zu ermitteln:

ping google.de
ping -4 notebook

Umgekehrt auch mit Schalter „/a“, um aus einer bekannten IP den Namen zu ermitteln (reverse DNS):

ping -a 192.168.1.1

Bei Zugriffsproblemen im LAN hilft es oft, statt des Server-Namens die so ermittelte IP zu verwenden.
____________________________________________________________

Route.exe –
____________________________________________________________

Telnet – Remotesteuerung auf Kommandozeile
Telnet entspricht dem Remotedesktop – ohne Desktop. Zur erfolgreichen Verwendung ist auf Benutzer-Seite der Telnet-Client notwendig. Auf neueren Windows-Systemen wird dieser nicht mehr standardmäßig installiert, das kann aber über die Windows-Systemsteuerung (Programme und Funktionen, Windows-Funktionen) nachgeholt werden. Auf dem Remote-Gerät muss der Telnet-Server laufen.
Telnet sieht keinerlei Verschlüsselung vor und ist weitgehend antiquiert, weil PC-Systeme grafische Lösungen anbieten, Router- oder NAS-Geräte heute bequem über eine Konfigurationsseite im Web-Browser bedient werden.
____________________________________________________________

Tracert.exe – Web-Tool zur Routenverfolgung
Tracert entspricht weitgehend dem Tool Pathping. Es liefert mit Angabe der gewünschten Internetadresse alle Vermittlungsseiten mit Name und IP (oder nur die IP mit „tracert -d…“) bis zur angegebenen Ziel-Site – etwa:

tracert wikipedia.de

Diese Analyse kann helfen, Leistungseinbrüche oder Zugriffsprobleme bei einer bestimmten Web-Seite zu erklären. Sie kann theoretisch auch Betrugsversuche entlarven.

Windows-Reparaturen

Windows 7/8/10 sind stabile Systeme. Trotzdem ist es beruhigend zu wissen, dass es bei Pannen ein ganzes Arsenal an Reparaturfunktionen gibt. Ein stotterndes Windows ist noch lange nicht tot, Ihre Benutzerdaten schon gar nicht.

Es ist erfreulich, dass die Systemkatastrophen seltener werden. Andererseits führt das dazu, dass Windows-Nutzern die Pannen-Kompetenz abhanden geht. Da wird dann schon bei harmlosen Problemen schnell formatiert und neu installiert. Falsch: Lesen Sie hier, welche weitreichenden Reparaturen Windows und das Windows-Zweitsystem beherrschen (WinRE: Windows Recovery Environment).

1. Datenrettung mit „Vorgängerversionen“ in Windows 7

Alle Windows-7-Editionen besitzen eine stille Backup-Funktion von Benutzerdateien, die Microsoft in Windows 8 wieder abgeschafft hat. Die Funktion arbeitet so dezent im Hintergrund, dass viele Windows-Benutzer sie offenbar schlicht übersehen oder vergessen. Deshalb hat Microsoft diese „Vorgängerversionen“ unter Windows 8 durch die aktivere Komponente „Dateiversionsverlauf“ ersetzt. Die ist zwar voll in Ordnung, aber die Lösung unter Windows 7 ist mindestens ebenbürtig.

Benutzerdateien wiederherstellen: Mit den „Vorgängerversionen“ können Sie verlorene Benutzerdateien (Text, Musik, Bilder) wiederherstellen oder defekte durch ältere, bessere Dateiversionen ersetzen. Das Zurückschreiben funktioniert nach einem Rechtsklick auf Ordner und Dateien mit der Option „Vorgängerversionen wiederherstellen“. Wenn Sie diese anklicken, erhalten Sie ein Fenster, das die verfügbaren Kopien mit Datumsangabe auflistet. Nachdem Sie eine Version markiert haben, können Sie diese Vorgängerversion im Explorer anzeigen („Öffnen“), an einen Ort Ihrer Wahl speichern („Kopieren“) oder an den ursprünglichen Ort zurückspeichern („Wiederherstellen“).

Komplett gelöschte Dateien oder Ordner können Sie natürlich nicht rechts anklicken. Hier wählen Sie „Vorgängerversionen wiederherstellen“ für den übergeordneten Ordner, klicken bei der gewünschten Version auf „Öffnen“ und ziehen nun Datei oder Ordner aus dem Explorer-Fenster an ein Ziel Ihrer Wahl.

Die Funktion berücksichtigt nur Änderungen: Gibt es keine älteren Versionen, dann wurde die Datei offenbar nie geändert. Bei jeder Datei, die Sie mindestens einmal geändert haben und die mindestens einen Wiederherstellungspunkt erlebt hat (sich also länger als einen Tag auf der Festplatte befindet), finden Sie eine oder mehrere ältere Versionen.

Einstellungen prüfen: Der Umfang der gesicherten Daten richtet sich nach den Werten, die unter „Computerschutz“ für die Partitionen eingestellt sind. Welche Laufwerke diesen Schutz erhalten sollen und in welchem Umfang (Plattenplatz), können Sie unter „Systemsteuerung –> System –> Computerschutz “ selbst bestimmen.

Sollte dort der Schutz für ein Laufwerk ausgeschaltet sein („Aus“), auf dem wichtige Benutzerdateien liegen, markieren Sie es in der Liste und klicken auf „Konfigurieren“. Im folgenden Fenster wählen Sie die Option „Systemeinstellungen und vorherige Dateiversionen wiederherstellen“. Darunter können Sie mit dem Schieberegler einstellen, wie viel Speicherplatz dadurch maximal belegt werden darf. Sicherheitsbewusste können bis zu 20 Prozent investieren. Ist der erteilte Platz nach einiger Zeit belegt, werden automatisch die ältesten Sicherungen gelöscht.

„Vorherige Dateiversionen“ unter Windows 7: In dieser Windows-Version lohnt sich ein großzügig eingestellter Systemschutz auch auf Datenpartitionen.

2. Systemreparatur im laufenden System

Bei Software- oder Systemfehlern, die Windows nicht am ordnungsgemäßen Start hindern, verwenden Sie die eingebaute Systemwiederherstellung. Sie finden diese wichtige Funktion unter „Systemsteuerung –> System –> Computerschutz –> Systemwiederherstellung“. Windows bietet hier von sich aus den letzten Wiederherstellungspunkt an, Sie können sich aber auch ältere anzeigen lassen. Mit Markieren des Eintrags und „Weiter“ setzen Sie das System auf diesen früheren Zustand und beseitigen damit akute Probleme, die Sie sich durch eigene Konfigurationsfehler oder eine Software-/Treiber-Installation eingehandelt haben. Die Maßnahme berücksichtigt Systemordner, den Programme-Ordner sowie die Registry und ist eine zuverlässige Methode, um akute Fehler zu beseitigen.

Tipp: Stellen Sie unter „Computerschutz“ unbedingt sicher, dass der Schutz mindestens auf der Systempartition aktiv ist – also „Ein“ anzeigt. Sie verbessern die Systemsicherheit zusätzlich, wenn Sie vor systemrelevanten Aktionen manuell einen Wiederherstellungspunkt anlegen. Dies geschieht unter „Systemsteuerung –> System –> Computerschutz“ mit der Schaltfläche „Erstellen“.

Hintergrund zum Computerschutz: Einmal täglich und wenn Updates und Installationen dies fordern, macht Windows einen Snapshot geänderter Systemdateien. Windows 7 berücksichtigt dabei auch Benutzerdateien (siehe Punkt 1) Um den Platzbedarf zu minimieren, speichert Windows in diesen Snapshots nur die geänderten Blöcke von Dateien und Ordnern, die sich seit dem letzten Systemwiederherstellungspunkt ergeben haben. Speicherort ist der versteckte und selbst mit Admin-Rechten unzugängliche Ordner „System Volume Information“ auf jeder Partition.

3. Erweiterte Startoptionen nach F8

Wenn Windows 7 oder 8 nicht mehr startet, nutzen Sie den „Abgesicherten Modus“ oder „Computer reparieren“ (Standard-Notfallsystem). Nach den Bios-Routinen kommen Sie beim Systemstart mit Taste F8 an den Bildschirm „Erweiterte Startoptionen“ mit einem textbasierten Menü, wo Sie mit Cursor-Taste die gewünschte Option auswählen.

F8 drücken? Das ist leichter gesagt als getan: Wenn auf Ihrem PC nur ein Windows-System vorhanden ist und folglich kein Bootmanager-Auswahlmenü erscheint, ist es schwierig, den richtigen Moment für F8 abzupassen: Während der Bios-Initialisierungen ist es zu früh, sobald der Windows-Kernel lädt, zu spät. Drücken Sie daher gleich nach dem Einschalten des PC mehrfach F8.

Tipp: Wenn Sie einen um zwei Sekunden verlängerten Systemstart akzeptieren können, hilft ein Trick. Sie erzeugen auf der Kommandozeile mit Admin-Rechten und den Befehlen

bcdedit /copy {current} /d "Dummy-OS"
bcdedit /timeout 4

einen zweiten Eintrag im Bootmanager. Somit bleiben immer vier Sekunden, um mit [F8] die „Erweiterten Startoptionen“ zu aktivieren.

ErweiterterStart
Reparaturoptionen nach F8: Am wichtigsten sind „Computer reparieren“ und „Abgesicherter Modus“. Das Menü zeigt weitere unten noch weitere Debug-Optionen.

4. Immer erst den „Abgesicherten Modus“ versuchen

Mit dem „Abgesicherten Modus“ starten Sie immer noch das Windows-Hauptsystem, allerdings mit wenigen Standardtreibern und ohne Software-Autostarts. Äußerlich erkennen Sie ein abgesichertes Windows sofort an der ungewohnten Bildschirmauflösung. Der Modus ist das ideale Instrument, um Treiber- und Software-Probleme zu beheben, also durch De-Installation wieder vom System zu schaffen. Wenn Sie sich unschlüssig sind, welche Komponenten im Geräte-Manager (Hardware-Treiber) oder unter Systemsteuerung –> Programme und Features“ (Software) zu entfernen sind, können Sie im „Abgesicherten Modus“ die Systemwiederherstellung starten und darauf vertrauen, dass diese einen jüngst installierten Störenfried zuverlässig beseitigt.

5. „Computer reparieren“: Zweitsystem WinPE

Auf jeder Windows-Setup-DVD, aber auch auf der Festplatte unter \Recovery befindet sich das Zweitsystem „Windows Recovery Environment“ (WinRE), das ein kaputtes Windows von außen reparieren kann. WinRE basiert auf dem Minisystem Windows PE („Windows Preinstallation Environment“). Um die Begrifflichkeit zu vereinfachen, sprechen wir generell von WinPE.

Sie starten WinPE, indem Sie nach [F8] unter “Erweiterte Startoptionen“ den Eintrag „Computer reparieren“ wählen. Damit lädt WinPE und zeigt Reparaturoptionen. Die Darstellung unterscheidet sich zwischen Windows 7 und 8 erheblich, funktional sind sich die beiden Zweitsysteme aber sehr ähnlich.

Startumgebung reparieren: Die „Systemstartreparatur“ in WinPE von Windows 7 durchsucht die Festplatten nach Windows-Installationen und erneuert dann die Startumgebung entsprechend. Diese Möglichkeit sollten Sie ausprobieren, wenn das BIOS nach dem Start kein Betriebssystem findet.

Im verschachtelten WinPE von Windows 8 finden Sie diese Systemstartreparatur unter „Problembehandlung –> Erweiterte Optionen –> Automatische Reparatur“.

Wiederherstellungspunkt zurückschreiben: Der nächste Punkt in WinPE von Windows 7 lautet „Systemwiederherstellung“. Hier können Sie vom Zweitsystem aus das defekte Hauptsystem auf einen älteren Zustand zurücksetzen. Das funktioniert genauso wie bei Systemwiederherstellung im laufenden Hauptsystem, indem Sie den jüngsten Wiederherstellungspunkt oder einen anderen auswählen und auf „Weiter –> Ja“ klicken.

Im WinPE von Windows 8 finden Sie den Punkt unter „Problembehandlung –> Erweiterte Optionen –> System wiederherstellen“.

Gesamtsicherung zurückschreiben: Mit der „Systemabbild-Wiederherstellung“ in WinPE von Windows 7 können Sie ein defektes System durch ein früher gesichertes Systemabbild ersetzen. Das setzt voraus, dass Sie über „Systemsteuerung –> Sichern und Wiederherstellen“ (Windows 7) oder „Systemsteuerung –> Windows 7-Dateiwiederherstellung“ (Windows 8) in jüngerer Vergangenheit die Sicherungsfunktion „Systemabbild erstellen“ ausgeführt haben.

Im WinPE von Windows 8 finden Sie den Punkt unter „Problembehandlung –> Erweiterte Optionen –> Systemimage-Wiederherstellung“.

Eingabeaufforderung: Dieser Punkt ist in vielen Fällen der wichtigste. WinPE hat zwar keinen grafischen Dateimanager, aber mit der Eingabeaufforderung kommen Sie an alle Ordner und Daten und können Sie mit „Copy“, „Xcopy“ oder „Robocopy“ auf ein anderes Laufwerk transportieren. Außerdem starten Sie über den Prompt beliebige externe Hilfsmittel wie etwa einen Total Commander oder 7-Zip-Packer. Beachten Sie dabei aber die Einschränkungen von 64-Bit-Zweitsystemen (siehe unten, Anmerkung 1).

Im WinPE von Windows 8 finden Sie den Punkt unter „Problembehandlung –> Erweiterte Optionen –> Eingabeaufforderung“.

Win7RE
Notfallsystem von Windows 7: Der einfache Dialog bietet Zugang zur Systemwiederherstellung und mit der Eingabeaufforderung eine Startrampe für Tools.
Win8RE
Notfallsystem von Windows 8 (Montage): Hinter dem schickeren Outfit verbergen sich die Funktionen des Vorgängers. Hinzu kommen „Refresh“ und „Reset“.

6. Einen „Systemreparaturdatenträger“ erstellen

WinPE lässt sich problemlos auf externe Datenträger kopieren. Das ist ratsam, weil nicht nur Windows, sondern auch das auf Festplatte vorinstallierte WinPE defekt sein kann. Außerdem können Sie dieses mobile Minisystem bequem um zusätzliche Tools erweitern.

In Windows 7 finden Sie in der Systemsteuerung den Punkt „Sichern und Wiederherstellen“ und dort „Systemreparaturdatenträger erstellen“. Unter Windows 8 erscheint diese Option unter „Wiederherstellung –> Wiederherstellungslaufwerk erstellen“. Hier in Windows 8 ist es dann auch vorgesehen, als Medium CD, DVD oder ein USB-Laufwerk anzusteuern.

Workaround für Windows 7: Das ältere Windows 7 bietet für den Systemreparaturdatenträger nur CD und DVD an. Um das Zweitsystem wie unter Windows 8 auf einem beschreibbaren USB-Stick unterzubringen, sind einige Zwischenschritte nötig:

1. Sie kopieren WinPE zunächst wie vorgesehen mit dem Systemsteuerungs-Applet auf eine CD.

2. Sie verwenden in Imgburn die Option „Imagedatei von Disc erstellen“, um WinPE nun wieder in ein ISO-Image auf die Festplatte zurückzuholen.

3. Sie laden das ISO-Image mit Virtual Clone Drive als virtuelles Laufwerk.

4. Nun bearbeiten Sie mit „diskpart“ den eingelegten USB-Stick: Mit „list disk“ erfahren Sie die Kennnummer des Sticks, den Sie dann mit

select disk [Nummer des USB-Sticks]

auswählen und mit „clean“ komplett säubern. Achten Sie dabei unbedingt darauf, das richtige Laufwerk anzusprechen! Dann richten Sie mit „create partition primary“, wählen diese mit „select partition 1“ und machen Sie mit „active” boot-fähig. Mit

format fs=fat32
assign

formatieren Sie mit FAT32 und vergeben einen Laufwerkbuchstaben.

5. Nun kopieren Sie den Inhalt des ISO-Images – nicht die ISO-Datei! – auf den bootfähigen Stick, den Sie um beliebige Tools erweitern können. Achten Sie dabei auf die passende Architektur – 32 Bit oder 64 Bit.

Windows Recovery Environment
Erweitertes Notfallsystem: Das Notfallsystem WinPE bringen Sie unter Windows 8 mühelos, unter Windows 7 mit etwas Aufwand auf einen USB-Stick.
Wiederherstellungslaufwerk
Windows 8 bietet auch USB-Sticks an: Ein „Wiederherstellungslaufwerk“ auf USB-Stick richten Sie unter „Systemsteuerung –> Wiederherstellung“ ein.

7. Für Bastler: DISM erweitert das Notfallsystem

Das „Deployment Image Servicing and Management Tool“ Dism.exe gehört unter Windows 7 und 8 zum Standardinventar. Dieses Tool lädt den Inhalt von WIM-Dateien (Windows Images) in ein beliebiges Verzeichnis und schreibt Änderungen danach wieder in das Windows-Image zurück. Es ist das Standardwerkzeug für angepasste OEM- Setups von Windows 7 oder Windows 8 sowie für angepasste Notfallsysteme (WinPE).

Und damit sind wir beim Thema: WinPE-Systeme befinden sich immer in einer einzigen Datei: \Sources\Boot.wim auf externen Reparaturdatenträgern, \Recovery\[…]\Winre.wim auf der Festplatte. Daher ist es nicht ohne Umweg möglich, das WinPE zu verändern oder zu erweitern. Dism kann das: Es muss auf einer mit Administratorrechten gestarteten Cmd.exe genutzt werden. Mit

dism /Mount-Wim /Wimfile:G:\sources\boot.wim /index:1 /Mountdir:C:\wim

Der Befehl lädt das erste Image (“Index:1″) aus der WIM-Datei (unter G:\Sources) in das Zielverzeichnis C:\wim. Das Zielverzeichnis muss existieren und leer sein. „Index“ muss immer angegeben werden, obwohl die WIM-Dateien von Windows PE nur ein System beinhalten (anders als die Install.wim beim Setup). Der Vorgang kann dann je nach Quell-Laufwerk einige Zeit dauern, danach steht der Inhalt des Images im Verzeichnis C:\wim zur Bearbeitung bereit. Sie können sowohl den „Programme“-Ordner, noch besser „System32“ mit weiteren Tools bestücken. Achten Sie auch hier wieder auf die passende Architektur der Software– 32 Bit oder 64 Bit. Nützliche Kandidaten sind der Total Commander, ein Hex-Editor, einen Bildviewer oder ein Undelete-Werkzeug wie Recuva.

Nach den gewünschten Änderungen schreibt der folgende Befehl das komplette geänderte Image in die WIM-Datei zurück. Entscheidend ist der Schalter „/commit“:

dism /Unmount-Wim /Mountdir:C:\wim /commit

Dieser Befehl kann natürlich nur auf beschreibbaren Medien funktionieren.

Dism
Windows-Image mit Dism bereitstellen: Nach dieser Aktion liegen die Dateien des Mini-Systems im Zielordner und können mit dem Explorer bearbeitet werden.

————————————————————
Anmerkung 1: Windows PE mit 32 Bit und 64 Bit
Beim Einsatz und beim manuellen Ausbau eines Windows-PE-Zweitsystems müssen Sie eine Eigenheit des Minisystems einkalkulieren: Anders als ein „großes“ 64-Bit-Windows bringt das 64-Bit-Notfallsystem kein Subsystem für 32-Bit-Software mit. Das heißt, dass Sie hier ausschließlich 64-Bit-Software starten sowie erfolgreich integrieren können. Wenn Sie 32-Bit-Software aufrufen, erhalten Sie eine Fehlermeldung, die klarste noch auf der Kommandozeile: „Das zum Unterstützen des Abbildtyps erforderliche Subsystem ist nicht vorhanden“.

Das vorinstallierte Notfallsystem auf der Festplatte hat immer dieselbe Architektur wie das Hauptsystem (siehe Basisinformationen nach [Win Pause]). Halten Sie daher eventuelle zusätzliche Tools wie den Total Commander immer in der richtigen Variante bereit.

Anmerkung 2: Registry mit Zweitsystem reparieren
Das Zweitsystem hat das Standardwerkzeug Regedit.exe an Bord, das beim Start zunächst die eigene Registry, also die des Zweitsystems anzeigt. Regedit kann aber auch auf die Registry des Hauptsystems zugreifen und diese bearbeiten. Dazu markieren Sie den Hauptschlüssel „Hkey_Local_Machine“ mit der Maus und wählen „Datei, Struktur laden“. Im daraufhin erscheinenden Dialog können Sie eine Registry-Datei vom Hauptsystem laden. Die Registry-Dateien befinden sich auf der Windows-Partition des Hauptsystems unter „\Windows\System32\config“. Hauptkandidat für Reparaturen bei ernsthaften Bootproblemen ist die Datei „SYSTEM“. Wenn Sie eine Registry-Datei in der beschriebenen Weise über „Struktur laden“ einlesen, fragt Sie Regedit nach einem Namen. Geben Sie etwa „ZZZ“, dann finden die importierte Datei unter „Hkey_Local_Machine\ZZZ“. Unter „ZZZ“ erscheint dann der importierte Registry-Teil des Hauptsystems mit allen Unterschlüsseln. Diese können Sie wie gewohnt bearbeiten. Wenn Sie anschließend „Datei, Struktur entfernen“ wählen, werden die Reparaturen in die defekte Datei des Hauptsystems zurückgeschrieben.

Diese Methode der Registry-Reparatur ist nur sinnvoll, wenn Sie von vornherein exakt wissen, wo der Fehler liegt, und ferner wissen, dass es sich um ein punktuelles Problem handelt, das mit einem manuellen Eingriff zu beseitigen ist. In der Regel trifft das nur für fehlerhafte Einträge unter „Hkey_Local_Machine\System\MountedDevices“ oder unter „Hkey_Local_Machine\System\CurrentControlSet“ zu.

Regedit.StrukturLaden
Regedit importiert Registry-Dateien aus anderen Windows-Installationen. Damit kann ein Zweitsystem die Registry-Fehler des Hauptsystems korrigieren.

Datenverschlüsselung – Kryptographie (Grundlagenbeitrag)

Das Motiv für Geheimschrift ist so fast alt wie Schriftlichkeit: Ein Text soll nur für den Texteigentümer oder für genau einen Textempfänger lesbar sein. Wer den Schlüssel nicht kennt, hat sinnlose Zeichen vor sich. Vor 2000 Jahren reichte eine Cäsar-Verschlüsselung für militärische Geheimbotschaften: Dabei wurde jeder Buchstabe um eine bestimmte Stellenanzahl im Alphabet vorgerückt wird – aus A wird dann etwa D, aus B wird E und so fort. Heute durchschaut diesen Code jeder clevere Grundschüler. Demgegenüber gehört heutzutage eine hochkomplexe Verschlüsselung zum Alltag, die gar nicht oder jedenfalls nicht mit vertretbarem Aufwand zu knacken ist. Ermöglicht wird dies durch schnelle Computer und passende Software. Was da eigentlich passiert, ist allerdings den wenigsten PC-Benutzern transparent. Dieser Beitrag erläutert die Grundmechanismen.

Symmetrische Verschlüsselung
Symmetrische Verschlüsselung

1. Symmetrische Verschlüsselung

Wer im PC-Alltag Daten verschlüsselt, nutzt in der Regel eine symmetrische Verschlüsselung. Diese kennzeichnet sich dadurch, dass beim Verschlüsseln wie beim Entschlüsseln derselbe Schlüssel benutzt wird. Die angesprochene Cäsar-Substitution ist ein extrem einfaches Beispiel für symmetrische Verschlüsselung. Der Schlüssel lautet „Alphabetposition plus | minus n“, wobei für „n“ nur 26 Möglichkeiten bestehen. Je nach Richtung – Chiffrierung oder De-Chiffrierung – werden dann die Einzelbuchstaben ersetzt.
Rar-, 7-Zip oder auch speziellere Kryptographie-Werkzeuge wie Bitlocker oder Truecrypt verwenden ebenfalls symmetrische Verschlüsselung, doch ist der Zugangsschlüssel hier ein variables, frei wählbares Kennwort. Dadurch gibt es theoretisch beliebig viele Schlüssel, und die Sicherheit der codierten Daten hängt wesentlich von der Länge und Komplexität des gewählten Kennworts ab.
Exkurs: Um genau zu sein, ist das Kennwort zwar für den Benutzer der Schlüssel zum Decodieren der chiffrierten Datei, technisch handelt es sich jedoch um einen hexadezimalen Schlüssel definierter Länge (etwa 256 Bit = 32 Byte). Diesen tatsächlichen Schlüsselcode kann das jeweilige Programm eindeutig aus dem Kennwort errechnen.

Um nun zu skizzieren, was bei der symmetrischen Verschlüsselung unter der Haube geschieht, verwenden wir ein vereinfachtes Beispiel. Die zu verschlüsselnde Datei enthält nur das Wort „PCWELT“, und das Kennwort lautet „geheim“. Die jeweilige Software – immer noch Rar, 7-Zip, Truecrypt, Bitlocker und Co. – kann nun zur Erhöhung der Sicherheit verschiedene Methoden einsetzen: etwa Transposition, also Verschieben von Bytes innerhalb eines definierten Blocks oder auch Ersetzungen nach dem logischen Vorbild der Cäsar-Verschlüsselung. Bei diesen kryptographischen Umwandlungen spielt der Schlüssel (Kennwort) immer eine wesentliche Rolle. Die verbreitete und bewährte symmetrische Verschlüsselung nach AES (Advanced Encryption Standard) sieht mehrere Umwandlungen innerhalb von 8-Byte-Blöcken unter Berücksichtigung des Schlüssels vor. Wie viel Aufwand eine Software im Einzelnen treibt, ist immer eine pragmatische Entscheidung zwischen höchstmöglicher Sicherheit und vertretbarem Rechenaufwand.
Anders als bei der simplen Cäsar-Rotation geschehen solche Codierungen aber nicht auf der Zeichen-, also der Byte-Ebene, sondern auf Bit-Ebene, also auf der untersten Informationsebene der Nullen und Einsen. Dabei spielt das selbstinverse XOR in moderner Kryptographie eine entscheidende Rolle.

Um diese zu verdeutlichen, kommen wir wieder zum Klartext „PCWELT“ und zum einfachen Kennwort „geheim“: Ausgangstext und Schlüssel (hier der Einfachheit halber mit dem Kennwort gleichgesetzt) werden im einfachsten Fall Byte für Byte verglichen und XOR-verknüpft. Beginnen wir beim ersten Byte: Das erste Zeichen und Byte in „PCWELT“ ist das „P“. Wie alles bei der digitalen Datenverarbeitung wird dieses „P“ intern durch eine Zahl dargestellt, nämlich mit dem (Ascii-) Wert 80, „g“ in „geheim“ mit dem Wert 103. In der Binärschreibweise im Rechner mit Nullen und Einsen sieht das so aus:

P = 80 (dez) = 01010000 (Bin)
g =103 (dez) = 01100111 (Bin)
XOR ————————-
7 = 55 (dez) = 00110111 (Bin)

XOR vergleicht Bit für Bit von Position 1 bis 8: Sind zwei Bits an der jeweiligen Position identisch, also „0 und 0“ oder „1 und 1“, so ergibt sich die „0“. Sind die zwei Bits unterschiedlich, also einmal die „0“ und einmal die „1“, so ergibt sich die „1“ als Ergebnis. In diesem Beispiel kommt XOR zu dem Bitmuster 00110111. Das entspricht dezimal 55 und das verschlüsselte Resultat ist am Ende die „7“ (Ascii 55).
Nach analogem Vorgehen für die weiteren Bytes wird aus „PCWELT“ der chiffrierte Text „7&? %9“.
Das Erfreuliche an der XOR-Verknüpfung: Bei der Dechiffrierung des Codes mit dem richtigen Kennwort, kommt dann wieder der Klartext zum Vorschein. Wieder soll das erste Byte als Beispiel genügen:

7 = 55 (dez) = 00110111 (Bin)
g =103 (dez) = 01100111 (Bin)
XOR ————————-
P = 80 (dez) = 01010000 (Bin)

Aus der „7“ wird also wieder das „P“ von „PCWELT“. Was sehr aufwändig aussieht und hier nur für ein einziges Byte beschrieben ist, erledigen Packer oder Verschlüsselungsprogramme selbst bei großen Dateien in Sekunden.

2. Einsatzgebiete symmetrischer Verschlüsselung

Truecrypt-Container oder 7-Zip-Archive mit einem komplexen Passwort als Schlüssel bieten zuverlässigen Schutz für persönliche Daten auf Cloud-Speichern oder mobilen Datenträgern – also bei Daten ohne Empfänger, bei Daten, die Sie nur selbst nutzen und geschützt wissen wollen. Muss jedoch ein Empfänger den Kennwort-Schlüssel erhalten, ist dies nur sicher, wenn der Schlüssel auf einem zweiten Kanal übermittelt wird – etwa telefonisch. Dies macht die symmetrische Verschlüsselung entweder unbequem oder unsicher, wenn Sie aus Bequemlichkeit denselben Schlüssel dauerhaft nutzen und an viele Empfänger weitergegeben.

3. Asymmetrische Verschlüsselung

Das entscheidende Merkmal der asymmetrischen Verschlüsselung sind zwei unabhängige Schlüssel: Einer dient zum Verschlüsseln, der zweite zum Entschlüsseln. Die beiden Schlüssel generiert die Software – prominent etwa PGP (Pretty Good Privacy) und Abkömmling OpenPGP – auf Ihrem Rechner. Danach wird der erste Schlüssel, also der öffentliche zum Verschlüsseln (public key), ohne Geheimniskrämerei individuell an alle Kommunikationspartner geschickt oder auch zu einem öffentlichen Key-Server im Internet. Nun können alle Partner Nachrichten an Sie mit diesem öffentlichen Schlüssel chiffrieren – Sie sind die einzige Person, die solche Nachrichten mit dem passenden privatem Schlüssel (private key) lesbar machen kann. Umgekehrt verschlüsseln Sie Ihre Nachrichten mit den öffentlichen Schlüsseln Ihrer Partner und haben die Sicherheit, dass nur der Empfänger mit dem komplementären privaten Schlüssel die Nachricht wird lesen können.
Das nicht ganz triviale Prinzip behebt das entscheidende Problem symmetrischer Codierung: die sichere Übermittlung des Schlüssels. Open-Source-Initiativen haben außerdem gewisse Bedienungshürden weitestgehend abgebaut: Key-Server, OpenPGP, Thunderbird mit Enigmail-Erweiterung machen sichere Mail-Kommunikation relativ komfortabel. Trotzdem haben sich PGP und Nachfolger nie entscheidend durchsetzen können, am wenigsten in der Windows-Welt.

Asymmetrische Verschlüsselung
Asymmetrische Mailverschlüsselung: Thunderbird, Enigmail und GnuPG machen sichere Mails relativ komfortabel. Öffentliche Schlüssel sind auf Key-Server zu finden.

Datenkomprimierung (Grundlagenbeitrag)

Große Datenmengen zu schrumpfen, ist ein Dauerthema in der digitalen Datenverarbeitung. Heute steht dabei selten der gewonnene Festplattenplatz im Vordergrund, sondern die schnelle Übertragung im lokalen Netz und ins Internet.
Komprimierung findet sich überall im Alltag digitaler Datennutzung. Bewusst ist sie jedem PC-Anwender beim aktiven Einsatz eines Packprogramms wie Winzip, Winrar und 7-Zip oder auch der NTFS-internen Komprimierung unter Windows. Unbemerkt von den meisten Nutzern arbeiten aber viele Bildformate, Audioformate und Videoformate mit interner Komprimierung. Die dabei genutzten Komprimierungsmethoden unterscheiden sich stark, lassen sich aber auf einige wesentlich Grundsätze abstrahieren.

Datenkomprimierung: Loss und Lossless
Während etwa Zip-Archive der genauen Originalzustand wiederstellen, nehmen Audio- und Videokomprimierer große Signalverluste in Kauf, die als irrelevant analysiert wurden.

Kürzen von redundanten Informationen

Packprogramme suchen in der Ausgangsdatei nach redundanten Informationen und ersetzen jede Wiederholung durch einen kürzeren Stellvertreter. So könnte etwa in einem Text, in dem mehrfach das Wort „Packprogramm“ auftritt, dieses durch „PP“ verkürzt werden. Eine 500-mal wiederholte Bitfolge (Buchstabe oder Farbpixel) könnte durch die einfache Angabe „500P“ abgekürzt werden. Das ist stark vereinfacht: Tatsächlich geht die digitalen Komprimierung immer hinab zur Bit-Ebene. Trotzdem entspricht dies der prinzipiellen Arbeitsweise: Wenn Sie eine Textdatei, die eine Million mal „P“ enthält, mit einem guten Packer verarbeiten, bleibt nur noch ein halbes Kilobyte übrig: Der Packer hat die extreme Redundanz erkannt und als Multiplikation codiert.
Im Normalfall werden wiederkehrende Bitmuster durch Zeiger auf die Stelle des letzten Auftretens codiert. Die grundlegenden Algorithmen unterscheiden sich und sind je für bestimmte Datentypen spezialisiert; das Prinzip folgt aber immer noch dem bahnbrechenden Lempel-Ziv-Algorithmus LZ77 von 1977. Weiter verbessert wurde das Verfahren durch die sogenannte Entropiekodierung: Da auch Zeiger Platz kosten, analysiert ein Packer zunächst die Häufigkeit der auftretenden Bitmuster. Für die häufigsten Bitmuster werden dann die kleinstmöglichen Zeiger eingesetzt, die seltensten erhalten die längsten Zeiger.
Progressive Kompression: Packprogramme wie RAR oder 7-Zip beherrschen außerdem die „progressive Kompression“ – ein Name, der über die Funktionsweise wenig aussagt: Es geht um die Fähigkeit, Redundanzen aller in einem Archiv befindlichen Dateien zu berücksichtigen. Ein gepacktes Archiv mit vielen Dateien sollte daher deutlich kleiner ausfallen als die Einzel-Archive derselben Dateien. Einfaches Windows-ZIP beherrscht diese Technik nicht, die allerdings auch einen Nachteil besitzt: Ist ein Archiv defekt, sind alle enthaltenen Dateien betroffen.
Verlustlose Kompression: Die bisher beschriebenen Methoden sind verlustlos: Aus dem komprimierten Archiv lässt sich das Original exakt rekonstruieren. Dies ist eine notwendige Voraussetzung für das Komprimieren von Binärdateien, also etwa für Programme oder Office-Dokumente, aber auch von puren Texte oder HTML-Dateien. Es gibt aber auch in anderen Bereichen verlustlose Kompression: So reduzieren die Audio-Codecs FLAC (Free Lossless Audio Codec) oder Apple Lossless ohne Signalverluste den Umfang von Wave-Audio-Daten um circa die Hälfte. Das Graphics Interchange Format (GIF) oder Portable Networks Graphics (PNG) wiederum sind verlustlose Komprimierungsstandards für Bilder.

Tilgen von irrelevanten Informationen

Komplizierter und wesentlich spezialisierter arbeiten Kompressionstechniken, die den Datenumfang dadurch verringern, dass sie irrelevante Daten entfernen. Dabei handelt es sich um verlustbehaftete Kompression: Der Vorgang ist nicht reversibel und das Datenmaterial des Originals ist aus der komprimierten Datei nicht mehr zu rekonstruieren. Neben der Entfernung irrelevanter Daten nutzen aber fast alle Komprimierungstechniken zusätzlich die verlustfreie Redundanzbeseitigung.
Allgemein bekannte, verlustbehaftete Kompressionsformate sind etwa MP3 im Audio-Bereich oder DivX im Videobereich. Weniger bewusst ist vielen Nutzern, dass auch das Bildformat JPG die Datendichte unumkehrbar verringert. Alle diese spezialisierten, verlustbehafteten Methoden nutzen die Erkenntnisse der Wahrnehmungspsychologie und der Psychoakustik. Viele akustische Signale in Audiodaten und Farbabstufungen in Bilddaten nehmen Ohr und Auge gar nicht oder allenfalls nur bei bewusst analytischer Prüfung wahr.
Beispiel JPG: Das Bildformat ist inzwischen älter als 20 Jahre und unangefochten das wichtigste Format in der Amateurfotografie und im Web. Ein erster Reduktionsschritt besteht darin, dass JPG-Bilder die Farbauflösung des Ausgangsmaterials verringern. Dies ist vor allem deshalb kaum wahrnehmbar, weil vorab die sensibleren Helligkeitswerte von den Farbwerten getrennt werden. In einem zweiten Schritt werden die Farben von nebeneinanderliegenden Bildpunkte vereinheitlicht. Das Ausmaß dieser Reduktion kann der Anwender selbst steuern – durch Kompressionsstufen, wie sie Bildbearbeitungen für JPG beim Speichern anbieten.

JPEG-Komprimierung
Einstellbare Kompressionsstufen: Wie bei Audio- und Videokomprimierung lässt sich beim Bildformat JPG der Kompromiss zwischen Qualität und Datengröße frei wählen.

Beispiel MP3: MP3 (MPEG-2 Audio Layer III) ist der Klassiker der Audio-Komprimierung und eine wesentliche Voraussetzung für den Siegeszug digitaler Musik. Das Gehör ist zwar kritischer als das Auge, andererseits hat es bekannte Schwächen: Der wahrnehmbare Frequenzbereich ist generell eingeschränkt auf etwa 20 bis 20000 Hertz, praktisch etwa auf nur 50 bis 15000. Ferner können leise Signale neben zeitgleichen lauten Signalen restlos gelöscht werden, weil das Ohr sie unter diesen Umständen nicht wahrnimmt. Tiefe Frequenzen kann das Ohr schlecht orten, so dass dort die Codierung auf einen Kanal (Mono) ausreicht. Neben dem Aussortieren solcher irrelevanter Signale kommt auch bei MP3 und ähnlichen Verfahren die klassische Redundanz-Kompression zum Zuge, etwa bei wiederholten Musikstellen. Aufgrund der notwendigen, gründlichen Analyse benötigt die Audio-Komprimierung mehr Zeit als die Datenkomprimierung mit einem Packer. Die verbleibende Ausgabequalität lässt sich bei MP3-Encodern wie dem Lame-Encoder in Format Factory oder CDEX vorab festlegen. Üblicherweise werden beim Rippen von CD oder beim Transkodieren aus einem anderen Format für MP3 192 KBit/s (24 KB pro Sekunde) empfohlen, um CD-ähnliche Qualität zu erzielen.

Beispiel DivX/Xvid: Für Video-Formate gelten zunächst ähnliche Regeln wie bei der Bildkompression. So wird in sämtlichen Einzelbildern wie beim JPG-Bildformat die Farbauflösung reduziert. Die Analyse aufeinanderfolgender Bilder ergibt ferner eine zeitliche Redundanz: Wenn sich in Bildfolgen nur geringe Teile des Bildes ändern, können gleichbleibende Teile gelöscht werden (Bewegungskorrektur). Helligkeitsänderungen werden als relativer Wert codiert, ohne das Folgebild selbst zu übermitteln. DivX bringt mit diesen Methoden eine Film-DVD (4 GB) notfalls auf einer CD (700 MB) unter. Im Allgemeinen empfiehlt sich aber bei Video- wie bei Audiokomprimierung eine variable Bitrate, die meist zu höherem Platzbedarf führt: Dafür kann der Kodierer hier aber von Fall zu Fall (je Frame) entscheiden, wie viel Verlust der aktuelle Frame verträgt.
Anders als beim aktiven Packen mit einer Software wie 7-Zip arbeiten Audio- und Videokomprimierer unbemerkt im Hintergrund. Die notwendige Software befindet sich in Codecs (Coder/Decoder), die das Betriebssystem und manche Player mitbringen. Fehlende Codecs führen zu mehr oder weniger eindeutigen Fehlermeldungen am Abspielgerät.

Benutzerkontensteuerung (UAC)

Jedes NT-Windows ist ein Mehrbenutzersystem. Das bedeutet nicht nur, dass die Benutzerdateien getrennt und gegenseitig abgesichert sind, sondern vor allem, dass unterschiedliche Rechte für zwei Kontentypen bestehen: die uneingeschränkten Administrator-Konten und die eingeschränkten Benutzerkonten. Im Gegensatz zum Administrator ist normalen Benutzern die Installation von Software und Treibern ebenso untersagt wie der Schreibzugriff auf Systemordner oder die Registrierungsdatenbank. Die eingeschränkten Rechte des normalen Benutzerkontos bieten zuverlässigen Schutz gegen Systemveränderungen: Wo der Benutzer nichts darf, kann er auch nichts kaputtmachen. Und weil ein eingeschränkter Windows-Explorer seine limitierten Rechte an alle durch ihn gestarteten Programme weitervererbt, kann auch ein Virus wenig ausrichten.

Konsequente PC-Arbeit mit eingeschränkten Konten hat sich aber unter Windows nie durchgesetzt. Schuld daran ist nicht Windows selbst, sondern die dort mangelnde Abwärtskompatibilität zu „alter“ Software und zu „alten“ Usern: Viele Benutzer wollen und kennen nur die vollen Zugriffsrechte. Hauptproblem sind aber nicht die Benutzer, sondern Tausende von alten Windows-Programmen, die einfach unlimitierte Administrator-Rechte voraussetzen. Die Windows-Explorer-Option „Ausführen als“ kann solche Kompatibilitätsprobleme nicht befriedigend kompensieren. Vor Jahren wurde daher mit Windows Vista die Benutzerkontensteuerung eingeführt.

Die seit Windows Vista eingeführte Benutzerkontensteuerung (User Account Control, UAC) ist Microsofts Reaktion auf die Tatsache, dass sich unter Windows die Arbeit im sicheren eingeschränkten User-Konto nie durchgesetzt hat. Viele Benutzer kamen vom alten DOS-basierten Windows und wollen und kennen nur die vollen Zugriffsrechte.

Die Benutzerkontensteuerung erfüllt zwei Aufgaben:

Sie soll Administrator-Konten sicherer und Benutzerkonten bequemer machen.

Trotzdem wird sie gerne mißverstanden als Nerv-Mechanismus für Admin-Konten: Denn bei (standardmäßig) aktivierter UAC besitzen auch Administratoren erst mal nur Benutzerrechte und müssen alle Aktionen, welche die Konfiguration des Systems ändern, explizit per Dialogbox bestätigen.
Das ist aber nur die eine Seite. Weitere Aufgabe der Benutzerkontensteuerung ist es, dem eingeschränkten Benutzer temporär Admin-Rechte einzuräumen (nach Kennwortabfrage) und damit die Systembenutzung im sicheren Benutzer-Kontext zu erleichtern. Eine aktive Benutzerkontensteuerung sorgt so auch bei Administrator-Konten für eingeschränkte Rechte. Das ist die nachhaltigste Sicherheitsmaßnahme, die ein Windows-Nutzer einsetzen kann. Wer die Abfragen der UAC liest und ernst nimmt, besitzt einen Basisschutz vor Viren und Schadprogrammen.

Die vier Stufen und zugehörigen Symbole des UAC-Dialogs

Die Benutzerkontensteuerung versucht überdies, eingeschränkte Rechte durch Virtualisierung zu kompensieren: Ein Programm, das nur eine Konfigurationsdatei unter %programfiles% schreiben will, muss dazu nicht mit Administrator-Rechten laufen. Stattdessen wird die Datei in den Profilordner „%userprofile%\AppData\Local\VirtualStore“ umgelenkt, Zugriffe auf die Registry landen unter „Hkey_Current_User\Software\Classes\VirtualStore“. Sobald das Programm mit eingeschränkten Rechten später im Programme-Ordner seine Daten sucht, reicht die Benutzerkontensteuerung die Daten aus dem „VirtualStore“ weiter. Diese Virtualisierung leistet unter der Haube eine stille Modernisierung von veralteter Software, die ohne Not auf Systemordner zugreifen oder nach „Hkey_Local_Machine“ schreiben wollen.

Die zwei Wege zur UAC-Abfrage („Möchten Sie zulassen…?“): Ein Programm wird explizit „Als Administrator“ gestartet oder das Programm-Manifest fordert Admin-Rechte.

Entschärfte Benutzerkontensteuerung seit Windows 7

Die lästigen Rückfragen der UAC unter Windows Vista waren kontraproduktiv – viele User waren davon so genervt, dass sie die UAC komplett deaktivierten. Unter Windows 7 und Windows 8 gibt es gegenüber dem simplen „Ein“ oder „Aus“ von Vista zwei weitere Zwischenstufen. Dies hat die Akzeptanz dieses Schutzmechanismus erheblich gefördert.
Zudem wurde die Events, die eine Kontenanhebung (User –> Admin) erfordern, seit Windows Vista generell überarbeitet und reduziert. Die UAC meldet auch auf der Höchststufe etwa 30 Prozent seltener. Hinzu kamen gegenüber Vista erweiterte Regeln in den Sicherheitsrichtlinien (Secpol.msc oder Gpedit.msc), um das UAC-Verhalten genauer steuern zu können („Lokale Richtlinien –> Sicherheitsoptionen“).

Tipp: UAC-Abfrage via Aufgabenplanung umgehen
Mit der Aufgabenplanung lässt sich die UAC-Abfrage für einzelne Programme gezielt umgehen. Ich erkläre die Prozedur am Beispiel des Registry-Editors.
1. Sie starten die Aufgabenplanung (Taskschd.msc).
2. Sie wählen „Aktion, Aufgabe erstellen“ („Action, Create Tasks“) und geben der zukünftigen Verknüpfung auf der Registerkarte „Allgemein“ („General“) unter „Name“ einen eindeutigen Namen, etwa „regedit“.
3. Sie aktivieren die Option „Mit höchsten Privilegien ausführen“ („Run with highest privileges“).
4. Sie wechseln auf die Registerkarte „Aktionen“ („Actions“) und klicken auf „Neu“ („New“).
5. Wählen Sie dann als Aktion „Programm starten“ („Start a progam“), und tragen Sie in das Feld „Programm/Skript“ den Registry-Editor inklusive seines kompletten Pfades ein – meist „c:\windows\regedit.exe“.
6. Auf der Registerkarte „Bedingungen“ („Conditions“) deaktivieren Sie die Option „Aufgabe nur starten, falls Computer im Netz betrieben wird“ („Start the task only if…“).
7. Zum Test können Sie über die „Aufgabenplanungsbibliothek“ („Task Scheduler Library“) den soeben erstellten Task „regedit“ mit „Ausführen“ („Run“) aufrufen: Startet der Registry-Editor ohne Rückfrage, ist die Konfiguration gelungen, und Sie können die Verknüpfung erstellen.
8. Erstellen Sie an beliebiger gewünschter Stelle eine neue Verknüpfung mit dem Ziel:

schtasks.exe /run /tn „regedit“

Der Name (hier „regedit“) muss genau dem entsprechen, was Sie vorher (2.) im Taskplaner definiert haben.

Tipp: Benutzerkontensteuerung mit dem Application Compatibility Toolkit umgehen
Mit einem speziellen Microsoft-Tool können Programme der UAC-Kontrolle entzogen werden. Damit entfällt der Warndialog (beim Administrator) bzw. die Passworteingabe (beim User). Der Ausschluss erfolgt über eine spezielle „Application Fix“-Datenbank. Um sie anzulegen, brauchen Sie ein Konto mit Administrator-Rechten und müssen sich das englischsprachige Application Compatibility Toolkit von Microsoft herunterladen und installieren.

Application Compatibility Toolkit

Das Application Compatibility Toolkit – Schritt für Schritt:
1. Sie öffnen „Start, Alle Programme, Microsoft Application Compatibility Toolkit“,
klicken mit rechter Maustaste auf „Compatibility Administrator“, und gehen
auf „Als Administrator ausführen“.
2. Nachdem Sie den UAC-Warndialog bestätigt haben und das Toolkit gestartet wurde, klicken Sie mit der rechten Maustaste auf den Eintrag „New Database(1) [Untitled_1]“ und wählen „Create New, Application Fix“.
3. Im Fenster „Program Information“ tragen Sie unter „Name of the program to be fixed“ den Namen der ersten Anwendung ein, die erlaubt werden soll.
4. Sie klicken auf „Browse“ und wählen die entsprechende ausführbare Datei dazu aus.
5. Klicken Sie nun auf „Weiter“ und aktivieren die Option „None“.

Windows Powershell

Microsoft’s Powershell (früher Codename „Monad“) erlaubt es, das gesamte System von einer Zentrale aus zu steuern. Der objektorientierte Ansatz dieser Kommandozeile ist traditionellen Shells, die mühsam Textoutput filtern müssen, um Längen überlegen. Auf der negativen Seite steht eine hölzern-sperrige interaktive Bedienung. Beachten Sie in diesem Zusammenhang auch den Beitrag Powershell für Ubuntu.

Dass Microsoft überhaupt in eine Kommandozeilen-Shell investiert, muss überraschen. Gut, bei Tüftlern, Script-Fans und Admins ist die Befehlszeile nicht totzukriegen – aber Microsoft hat eigentlich genug schlechte Erfahrungen gesammelt, um dieses Feld einfach anderen zu überlassen. Die berüchtigte und wenig genutzte „Eingabeaufforderung“ hat wenig Ruhm geerntet: Die Variante Command.COM unter Windows 98/ME war grauenhaft, die Cmd.EXE von Windows 2000/XP gerade mal alltagstauglich. Normale Windows-Anwender sehen heute kaum noch Anlass, krude Befehle auf einer solchen Kommandozeile einzugeben – sie halten sich an bequeme Mausaktionen.

Ein völlig neues Kapitel: Die Powershell wirft alle Altlasten über Bord und verwirklicht eine ehrgeizige Synthese. Monad verbindet die Fähigkeiten einer Unix-Shell mit dem objektorientierten .NET Framework. Wir erläutern, was das konkret heißt, wer das tatsächlich braucht und wo die Vorteile gegenüber den bekannten Instrumenten liegen (Cmd, Wmic, Windows Scripting Host). Die Powershell ist eindeutig ein Scripting-Instrument für Profis, bietet aber auch Einsatzmöglichkeiten für den normalen Anwender.

1. Was eine Shell (und warum Powershell eine) ist
Unter einer „Shell“ versteht man eine System-Zentrale, die einen möglichst umfassenden Zugang zu sämtlichen Komponenten eröffnet. Eine Shell sollte also Informationen zur gesamten Hard- und Software liefern, alle externen Programme und Scripts starten, ferner Benutzerdateien selbst bearbeiten oder an Anwendungsprogramme weitergeben. Die grafische Windows-Shell, der Explorer, bietet jedoch keinen umfassenden Zugang – an die Registry, die Prozesse oder die Systemdienste etwa kommen Sie nur über eigene Programme heran – in diesen Fällen Regedit, Task-Manager und MMC (Management-Konsole). Viele weitere Windows-Komponenten sind zwar irgendwo integriert. Wo sie jeweils zu finden sind, lässt sich aber nicht intuitiv erschließen. Eine gute Shell zeichnet sich vor allem dadurch aus, dass sie alle Programme, Inhalte und Methoden an einem Punkt integriert. Die Powershell startet praktisch alles, womit man sie füttert: EXE, BAT, MSC, VBS … Benutzerdateien wie DOC, JPG, XLS, PDF lädt die Shell direkt in die passende Anwendung. Übrigens: Steht der Dateiname in Anführungszeichen, muss ein „&“ vorangestellt werden, um den Befehlszeilenmodus zu erzwingen. Meister aller Klassen: Die Powershell holt via WMI (Windows Management Instrumentation) Informationen aus allen verfügbaren Windows-Klassen und steuert COM-Anwendungen wie den Internet Explorer oder Office-Programme. Ein Beispiel:

$dlg = new-object -ComObject "shell.application"
$tmp = $dlg.BrowseForFolder(0,"",1,17)

Die beiden Zeilen starten den Windows-Dialog „Ordner suchen“. Der gewählte Ordner landet dann in der Variablen $tmp. Das ist nur ein kleines Beispiel für die Möglichkeiten. Dreh- und Angelpunkt sind die derzeit 153 vordefinierten Befehle, welche die Powershell nach „get-command“ auflistet, Ein erstes „Cmdlet“ („Commandlet“ – so der Name dieser Kommandos) deutet an, dass die Shell Objekte integriert, die bislang nicht unter einen Hut zu bringen waren:

get-psdrive

listet nicht nur die Laufwerke auf, sondern auch die Registry („hklm:“ und „hkcu:“), Variablen und Funktionen. Da diese Objekte als Laufwerke gemountet sind, lassen sie sich auch genauso ansprechen:

cd hklm:\software\classes\exefile
dir

„cd“ und „dir“ sind DOS-freundliche Aliases für die eigentlichen Cmdlets „set-location“ und „get-childitem“. Das Beispiel zeigt, dass die Shell in der Registry, in Funktionen und Variablen ebenso wie in Datei-Ordnern spazierengeht. Ändern, Löschen, Eintragen ist natürlich mit den passenden Cmdlets ebenso möglich. Nur noch zwei Beispiele:

get-itemproperty "hkcu:\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
stop-process -processname notepad*

Der erste Befehl zeigt die Windows-Standardordner des aktuellen Benutzers, der zweite beeendet Notepad oder Notepad2.

2. Der Prompt und die Datei Profile.PS1

Von der Bedienung gibt es starke Ähnlichkeiten mit der gewohnten Kommandozeile Cmd.EXE: Das Editieren der Zeilen geschieht auf dem Prompt auf vergleichbare Weise. Das gilt für die automatische Pfad- und Datei-Namenserweiterung mit der-Taste, ebenso wie für die History-Funktion, bei der Sie mitoderdie letzten Befehle zurückholen. Zahlreiche Aliases für die umständlichen Cmdlets orientieren sich an alten Cmd-Kommandos („dir“, „del“, „cls“, „ren“, „md“, „type“ …). Eine eigenes Alias ist mit

new-alias n notepad.exe

schnell angelegt (um mit „n“ den Editor zu starten). Der Wert der Aliases ist aber begrenzt, da sie nur als Kommandoabkürzung taugen und keinerlei Argumente zulassen. Weit leistungsfähiger sind Functions:

function n {notepad.exe $args}

Jetzt kann auf dem Prompt der Dateiname gleich mitgegeben werden („n“). $Args ist eine Standardvariable, die sämtliche oder einzelne ($Args[]) Argumente weitergibt. Da der Powershell-Prompt eine Eingabe wie „3.14 * 6.34“ oder „0x2A1“ (Hexzahl) direkt als Rechenaufgabe interpretiert und löst, können Sie mit etwas Code auch komplexere Aufgaben umsetzen:

function Tage {((get-date("$args"))-(get-date)).days}

Die Eingabe „tage 22.10.2009“ gibt dann die Anzahl der Tage bis zum eingegebenen Datum zurück. Die Powershell geizt mit vorgefertigten Funktionen, aber es ist nur eine Frage der Zeit, bis Anwender selbstgestrickte im Web anbieten werden. Der in einer Funktion abgelegte Code gilt so lange, bis die Shell geschlossen wird. Aber es ist natürlich nicht zumutbar, komplexere Funktionen oder Befehle jedes Mal neu per Hand einzugeben. Hier kommt das Script Profile.ps1 ins Spiel, das die Shell beim Start automatisch einliest. Es kann alle möglichen Variablen, selbstgestrickte Funktionen und Aliases enthalten. Der Standardpfad der aktuellen Version 3.0 ist

%windir%\System32\WindowsPowerShell\v1.0

Eine hier abgelegte Profile.ps1 liest die Shell beim Start in jedem Fall neu ein. PS1-Scripts werden aber erst ausgeführt, wenn die Policy entsprechend eingestellt ist:

Set-ExecutionPolicy unrestricted

3. Der Kern der Powershell: Objekte in der Pipeline

Bis hierher habe ich die Powershell wie eine Unix-ähnliche Shell beschrieben. Damit sind wir aber noch nicht beim Kern der Sache. Der heißt nämlich: Objektorientierung im Verbund mit Pipelines. Pipes wie „Sort“ oder „Find“ unter Cmd filtern einfach Text, Pipes in der Powershell hingegen das gesamte Objekt inklusive aller Eigenschaften und Methoden. Dazu ein Beispiel:

$a=get-process

Das Kommando schreibt die aktuelle Prozessliste in die Variable $a (alle Variablen, gleich welchen Typs, beginnen mit „$“). Einfaches

$a

zeigt dann die Prozessliste mit acht Eigenschaften an. Diese Repräsentation ist aber nur freundliche Formathilfe der Shell. Die Variable enthält in Wahrheit wesentlich mehr:

$a | where {$_.name -like "*explorer*"}|format-list *

Hoppla: Jetzt liefert Variable zu dem einen Prozess „Explorer“ gut die doppelte Menge an Daten, die sie vorher über sämtliche Prozesse zurückgab – eine Unzahl weiterer Eigenschaften, welche die Shell ohne explizite Formatangabe automatisch wegfiltert. Erst „format-list *“ (Kurzform: „fl *“) liefert das Ganze. Um herauszufinden, welche Eigenschaften und Methoden für ein Datenobjekt insgesamt vorliegen, gibt es einen systematischeren Weg:

"Hallo" | get-member

„Hallo“ ist ein String-Objekt, daher erhalten wir eine Liste der .NET-Methoden zur Stringverarbeitung, so etwa „ToUpper“ – und folgerichtig gibt dann

"Hallo".toupper()

„HALLO“ zurück. Über „get-member“ ermittelte Pipes helfen dann, Objekt-Variablen genau auf das inhaltlich Gewünschte einzugrenzen:

$aktuell=dir c:,d:,e: -recurse -include *.doc,*.xls | where {$_.lastaccesstime -gt "1.10.2008"} | select name,lastaccesstime

Schon der „Dir“-Befehl grenzt ein, der „Where“-Filter lässt auch davon nur die jüngst genutzten Dateien übrig, und „Select“ reduziert dann die Objekteigenschaften auf zwei. Das Objekt enthält jetzt nur noch diese zwei Eigenschaften der zuletzt genutzten DOC- und XLS-Dateien auf den Laufwerken C:, D: und E:. Beachten Sie, dass nun für diese Objektvariable scheinbar selbstverständliche Datei-Eigenschaften tatsächlich fehlen: Eine Sortierung nach der Extension („sort extension“) wäre etwa nicht mehr möglich. Aus dem gleichen Grund kann

dir -recurse|select name,length|where {$_.CreationTime -gt "1.10.2008"}

nie ein Ergebnis befördern, weil die Eigenschaft des Erstellungsdatums (CreationTime) durch den Select-Befehl ausgefiltert wurde und nicht mehr existiert. Die zwei Pipes sind also syntaktisch umzustellen. Ein letztes praktisches Beispiel für kombinierte Pipes:

$doppel=dir c: -recurse *.mp3 | group length|where {$_.count -gt 1}|select -expand group| ft name,length

Diese eine Zeile beantwortet eine komplexe Frage: Wenn es auf Laufwerk C: MP3-Dateien gleicher Bytezahl gibt, werden diese untereinander angezeigt. Lautet dann auch noch der Name ähnlich, handelt es sich offenbar um überflüssige Doppel.

4. Powershell mit umfassenden Script-Fähigkeiten

Die Beispielzeilen in diesem Beitrag sind – der Lesbarkeit halber – bewusst knapp gehalten. Komplexe Objekt-Pipes per Hand einzugeben ist weder vergnüglich noch notwendig. Der Platz für globale Funktionen und Variablen ist die schon angesprochene Profile.PS1 , weiterer Code kann in beliebigen Textdateien mit Endung PS1 abgelegt und in der Shell durch Eingabe der Code-Datei abgerufen werden. Die umfangreichen Script-Möglichkeiten, um Objektvariablen weiter zu bearbeiten, können wir hier kaum andeuten. Sie entsprechen in vielen Belangen der Syntax von Unix-Shells, sind aber auch für jeden WSH-oder Batch-Erfahrenen durchaus zugänglich – an „If“, „For“, „Foreach“, „While“ oder „Switch“ in der einen oder anderen Form kommt keine Sprache vorbei. Die Fehlermeldungen des Interpreters sind informativ und zielführend, das Hilfesystem verdient hingegen bislang seinen Namen nicht. Den simpelsten Zugang zum Scripten bieten sicherlich Filter, die den Datenstrom der Pipeline entweder weiterfließen lassen oder nicht. Die einzelne Instanz wird in jedem Filter (auch in „Where“ oder „Foreach“) mit der globalen Variable „$_“ bezeichnet. Darf das Ding oder eine Eigenschaft desselben also durch, schreibt man einfach „$_“ oder „$_.“. Ganz einfaches Beispiel:

Filter Dirs {if ($_.parent) {$_}}
dir -recurse|Dirs|select name

Um mit Kontrollstrukturen wie „If“ oder „While“ Entscheidungen zu treffen, helfen die üblichen Vergleichsperatoren:

-eq gleich (equal)
-ne ungleich (not equal)
-lt kleiner (lower than)
-le kleiner oder gleich (lower or equal)
-gt größer (greater than)
-ge größer oder gleich (greater or equal)

Also etwa:
if ($a -lt 1000) {write-host "Kleiner"}

5. Super-Shell? Nicht jetzt und nicht für jeden …

Objektorientierung und Scriptsprache der Shell sind konzeptionell beeindruckend. Selbst die sperrigen Cmdlets verlieren zusehends ihren Schrecken, wenn man sich eingearbeitet hat und ihre konsistente Grammatik kennt: „get-content“ („gc“) funktioniert einfach immer, wenn ein „Content“ vorliegt, also bei der Datei Boot.INI ebenso wie bei der Funktion „Prompt“. Für Fehlerbehandlung („Trap“), Testläufe („-Whatif“ bei Methoden), automatische Erkennung von Variablentypen und saubere Gültigkeitsbereiche der Variablen („Scopes“) ist ebenso gesorgt wie für die Erweiterbarkeit: Das .NET-Framework mit dem C#-Compiler enthält alles, um neue DLLs und darin enthaltene Cmdlets zu erstellen. Die Shell kann wesentlich mehr als Cmd und der Scripting Host zusammen und macht nebenbei eine ganze Reihe von Windows-Applets arbeitslos.
Den Geschmack der Admins und Tüftler dürfte die Shell treffen. Den normalen Anwender wird sie kaum auf die Kommandozeile locken: Das Editieren der Zeilen ist so spartanisch wie bei Cmd, vor allem aber mangelt es noch an interessanten, fertigen Funktionen, die sofort Produktivität versprechen. Die derzeit verfügbare Beta kommt buchstäblich nackt zum Anwender: Er muss sie erst selbst Funktion um Funktion zu einem tauglichen Werkzeug machen. Es ist wohl nur eine Frage der Zeit – aber im Moment sind im Web überzeugende Scripts und Funktionen noch Mangelware.
Nicht ganz nebensächlich ist ferner der Ressourcenverbrauch: Schon die nackte Shell ist mit ihren .NET-Bibliotheken kein Leichtgewicht. Einige größere Objektvariablen mit Dateiobjekten eingelesen, und die Powershell wird im Handumdrehen zum RAM- und CPU-Konsumenten Nummer 1.

6. Einige Kommandozeilen-Beispiele

Zur Ausgabe auf dem Prompt bietet die Shell verschiedene vordefinierte Farbcodes.

write-host "Starte Vorgang..."
write-warning "Achtung..."
write-error "Fehler..."

So definieren Sie das Erscheinungsbild (hier blaue Schrift auf weißem Hintergrund) und Titel.

$host.UI.RawUI.ForegroundColor = "DarkBlue"
$host.UI.RawUI.BackgroundColor = "White"
$host.ui.rawui.WindowTitle = "Powershell on ${env:userdomain}${env:username}" + " " + (get-date -uformat "%A, %d.%m.%Y [%T]")

Folgende Pipe gibt die 50 größten Dateien auf Laufwerk D: zurück.

Get-ChildItem -recurse d:\ | Select name,length | Sort-Object length -descending | Select-Object -first 50

Ähnlich der folgende Befehl, der Dateigrößen und den kompletten Pfadnamen der 50 größten Dateien zurückgibt:

Get-ChildItem d:\ -recurse | Sort length -descending | Select -first 50 | fl length,fullname

Das folgende Kommando filtert gezielt alle Dateien, die größer sind als 50 MB (Out-Gridview bietet eine grafische Tabelle außerhalb der Powershell):

Get-ChildItem d:\  -recurse | Where {$_.Length -gt 50MB} | select fullname,length | out-gridview

Die nächste Pipe gibt die 10 größten Dateien auf Laufwerk D: zurück und zeigt an, wie lange die Aktion dauert.

measure-command {Get-ChildItem -recurse d: | Select name,length | Sort-Object length -descending | Select-Object -first 10 }

So lesen Sie die Shellfolder aus der Registry in eine Variable und nutzen diese zur Navigation:

$UserFolder=get-itemproperty "HKCU:SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders"

push-location $UserFolder.Desktop

Folgender Befehl erzwingt eine Pause von 5 Sekunden:

start-sleep -s 5

Die folgenden Befehle erstellen ein COM-Objekt und nutzen es dann zur Fensterdarstellung:

$dlg = new-object -ComObject "shell.application"
$dlg.CascadeWindows()
$dlg.MinimizeAll()
$dlg.UndoMinimizeAll()

Das nachfolgende Kommando (eine Zeile!) listet die Windows-Dienste mit ihren beschreibenden Namen auf und kennzeichnet alle laufenden Dienste rot, die beendeten grün:

get-service | foreach {if ($_.status -eq "stopped") {write-host -f green $_.displayname} else {write-host -f red $_.displayname}}

Das nächste Kommando beendet den Explorer:

stop-process -processname explorer

Die kleine Funktion „n“ verkürzt den Aufruf von Notepad auf die Eingabe „n“. Die Standardvariable $Args sorgt dafür, dass eine übergebene Datei in Notepad geöffnet wird:

Function n{Notepad.EXE $args}
n c:\boot.ini

Folgende Funktion liefert eine Tabelle aller verfügbaren Laufwerke mit Typ, Größe und freiem Speicher:

Function Disks {
$Disks = Get-WMIObject Win32_LogicalDisk -computer "."
""
write-host " Kennung Typ GB GB frei" -BackGroundColor DarkRED -ForeGroundColor White
""
ForEach ($d in $Disks) {
$typ=$d.drivetype
Switch ($typ) {
2 {$typ="FDD"}
3 {$typ="HDD"}
4 {$typ="Net"}
5 {$typ="CD "}
}
" {0} {1} {2,7:n} {3,10:n}" -f $D.DeviceID, $typ, $($d.Size/1024/1024/1024), $($d.freespace/1024/1024/1024)
}
""
}

Kleine Funktion in Powershell…

Das nächste Beispiel (eine Zeile!) liefert eine Statistik zu den Dateierweiterungen im aktuellen Ordner (inkl. Unterordner):

dir -recurse|group-object -property extension|sort count|Format-table @{expression="name";width=8},@{expression="group";width=65},@{expression="count";width=5}

Wenn Sie mit „format-table“ (oder Kurzform „ft“) die Ausgabe als Tabelle anfordern, lässt die Powershell zwischen den Spalten oft große, störende Zwischenräume. Das lässt sich mit „format-table -autosize“ oder kürzer „ft -auto“ unterbinden:

dir -recurse | sort length | select length,fullname | ft -auto

Folgender Ablauf könnte in einem PS1-Script erfolgen: Aufruf eines Tasks – Warten auf dessen Abschluss – Fortsetzen des Scripts:

notepad.exe
$a=get-process notepad
$a.WaitForExit()
write-host "Weiter..."

Die nachfolgenden Zeilen greifen eine Webseite ab und legen den Inhalt in einer Textdatei ab:

$wc = new-object System.Net.WebClient
$wc.DownloadString('http://www.beispiel.de/index.html') | out-file s.txt
get-content s.txt

Das nächste Beispiel zeigt eine einfache Textsuche mit dem Cmdlet Select-String:

Select-String -path *.txt -SimpleMatch "Monitor"

Um dieselbe Suche auf alle Unterverzeichnisse auszuweiten, hilft folgende Kombination mit Get-Childitem (oder gci) und dem Parameter -recurse:

gci -include *.txt -recurse | Select-String -SimpleMatch "Monitor"

Eine seit Version 2.0 eingeführte attraktive Out-Variante ist „Gridview“. Die Objektdaten werden grafisch dargestellt und lassen sich filtern und sortieren:

get-service | select status, name, displayname, servicesdependedon | out-gridview

Powershell mit grafischem Ausgabefenster (Gridview)