Die DesktopdateienEinstieg in PsTools

Wes Miller

Laden Sie den Code für diesen Artikel herunter: MillerTheDesktopFiles2007_03.exe (150KB)

Bis zum letzten Jahr war ich bei Winternals Software beschäftigt (das Unternehmen wurde im Juli 2006 von Microsoft übernommen). Winternals verkaufte kommerzielle Software, aber die Unternehmensgründer Mark Russinovich und Bryce Cogswell waren auch Besitzer eines separaten Unternehmens namens Sysinternals, das viele Tools als Freeware vertrieb. Einige dieser Freewareanwendungen wurden

sogar Komponenten des Winternals Administrator’s Pak. Marke und Bryce lizenzierten diese Tools auch für Unternehmen, die sie außerhalb der üblichen Freewarelizenzbedingungen verwenden wollten.

Eines meiner Lieblingstools, bei dem es sich eigentlich um eine ganze Reihe von Tools handelt, ist die PsTools-Suite, die Sie jetzt unter microsoft.com/technet/sysinternals/utilities/pstools.mspx finden. Mark nannte die Tools ps nach dem UNIX-Prozesslisten-Dienstprogramm. Wie auf der Downloadsite für die Tools erwähnt, gibt es integrierte Windows®-Befehlszeilenprogramme, die zum Teil dieselben Funktionen wie diese Tools ausführen können. Doch neben der wichtigen einzigartigen Funktionalität besteht ein Hauptunterschied darin, dass die PsTools-Suite lokal oder von einem Remotestandort aus verwendet werden kann (vorausgesetzt, dass die Remotesysteme richtig konfiguriert sind). Noch besser ist, dass der Prozess zur Remoteausführung fast so einfach wie die lokale Ausführung ist.

Die PsTools-Suite umfasst mehrere einzelne Anwendungen, die in Abbildung 1 aufgeführt sind. Wie bei den übrigen Sysinternals-Dienstprogrammen gibt es kein Installationsprogramm, sondern nur Anwendungen. Stellen Sie die Anwendungen einfach in einen Ordner auf Ihrem Pfad, und los geht’s!

Figure 1 PsTools-Dienstprogramme

Tool Beschreibung
PsExec Ermöglicht die Ausführung von Prozessen in beliebigen Benutzerkontexten.
PsFile Zeigt die Dateien an, die von einem Remotestandort aus auf einem System geöffnet wurden.
PsGetSid Zeigt die Windows-Sicherheits-ID (SID) eines Computers oder Benutzers an.
PsInfo Listet Informationen zu einem Windows-System auf.
PsKill Beendet Prozesse anhand des Namens oder der Prozess-ID.
PsList Führt ausführliche Informationen zu Prozessen auf, die gerade ausgeführt werden.
PsLoggedOn Zeigt alle lokal angemeldeten Benutzer an, sowie alle Benutzer, für die Remoteressourcen freigegeben wurden.
PsLogList Bildet Windows-Ereignisprotokolldatensätze ab.
PsPasswd Ändert die Kennwörter von Benutzerkonten.
PsService Zeigt Windows-Dienste an und steuert sie.
PsShutdown Fährt einen Computer herunter, startet ihn neu, versetzt ihn in den Ruhezustand oder hält ihn an.
PsSuspend Hält Prozesse an, die gerade ausgeführt werden.

Möglicherweise haben Sie festgestellt, dass ein Teil dieser Funktionalität (speziell PsLogList) über die Windows-Verwaltungsinstrumentation (WMI) und eine komplexe Skriptprogrammierung ausgeführt werden könnte. Das Besondere an der PsTools-Suite ist jedoch, dass jedes Dienstprogramm zur einfachen Durchführung einer bestimmten Aufgabe entwickelt wurde.

Ich werde Ihnen die einzelnen Tools vorstellen und jeweils anhand eines einfachen Beispiels zeigen, warum und wie Sie das jeweilige Tool verwenden könnten. Doch zuerst finden Sie hier eine kurze Einführung, wie die Tools selbst arbeiten und welche Voraussetzungen vorhanden sein müssen, damit sie funktionieren.

Wie funktionieren die Tools?

Die Tools funktionieren im Allgemeinen auf gleiche Weise. Auf dem Hostsystem starten Sie das gewünschte PsTool. Obwohl viele dieser Tools lokal ausgeführt werden können, werden Sie feststellen, dass sie in der Regel den größten Nutzen bieten, wenn sie für ein Remotesystem oder mehrere Systeme auf einmal ausgeführt werden. (PsExec bildet eine Ausnahme, wie Sie unten in meinem Beispiel sehen werden.) Bei Verwendung des von Ihnen bereitgestellten Befehlszeilenarguments kopiert sich das Dienstprogramm selbst in die administrative Freigabe des Remotesystems, die dieselbe wie %SystemRoot% (Windows-Verzeichnis) auf dem Remotesystem ist.

Nach dem Kopieren in das Remoteverzeichnis startet die Anwendung von sich aus und installiert einen Windows-Dienst. Dieser Windows-Dienst führt den von Ihnen gewünschten Task anhand der Anmeldeinformationen aus, die Sie zur Startzeit bereitgestellt haben. Wenn eine Endbenutzer-Benutzeroberfläche auf dem Clientsystem für das betreffende Tool erforderlich ist, startet dieser Dienst eine zusätzliche Binärdatei im Kontext des Benutzers. (Wie Sie wissen, können Dienste keine direkten interaktiven Benutzeroberflächen generieren.) Der Dienst gibt notwendige Informationen an die Konsole zurück, von der aus er gestartet wurde. Schließlich deinstalliert der Dienst sich selbst.

Wie Sie sehen, sind die Tools leistungsfähig und eigenständig. Obwohl mehrere Binärdateien und Prozesse beteiligt sind, müssen Sie sich als Benutzer nicht darum kümmern – führen Sie einfach das gewünschte Tool aus, und es funktioniert.

Zum Verwenden der Tools müssen folgende Voraussetzungen erfüllt sein: entweder Windows NT®, Windows 2000, Windows XP oder Windows Server ® 2003 (x86- und x64-Versionen von Windows werden unterstützt, aber keine Itanium-Versionen); die standardmäßige administrative Netzwerkfreigabe, die auf dem Remotesystem aktiviert ist, auf dem Sie die Tools ausführen (admin$); die Ports für die Datei- und Druckerfreigabe, die auf dem Remotesystem geöffnet sind (unabhängig davon, ob Sie die Windows-Firewall, die Internetverbindungsfirewall oder ein anderes Firewallprodukt verwenden).

PsExec

PsExec ist mein persönlicher Favorit unter den Tools, aber wahrscheinlich nicht aus dem von Ihnen erwarteten Grund. Seit fast zwei Jahren verwende ich meine Systeme als Benutzer ohne Administratorrechte, also als Benutzer und nicht als Administrator. Stattdessen verwende ich ein kurzes Skript namens run.vbs, mit dessen Hilfe ich Anwendungen als lokaler Administrator ausführe (sie könnten auch von jedem beliebigen Benutzer ausgeführt werden). Abbildung 2 zeigt den Inhalt des Skripts (das auch auf der TechNet Magazin-Website unter technetmagazine.com/code07.aspx zur Verfügung steht). Das Skript geht davon aus, dass sich die PsTools in der Systemvariablen „Pfad“ befinden.

Figure 2 Run.vbs

SET WshShell = WScript.CreateObject("WScript.Shell")
SET WshSysEnv = WshShell.Environment("SYSTEM")
SET FSO = CreateObject("Scripting.FileSystemObject")
IF WScript.Arguments.Count <> 0 Then
    FOR EACH arg IN WScript.Arguments
        iArgCount = iArgCount + 1
        strCmdArg = (arg)
        strCmdArray = Split(strCmdArg, " ", 2, 1)
        IF iArgCount = 1 THEN
        strExe = strCmdArray(0)
        ELSEIF iArgCount = 2 THEN
        strRun = strCmdArray(0)
        ELSE
        strParams = strParams&" "&strCmdArray(0)
        END IF
    NEXT
END IF
'/t:0A && title ***** Admin ***** 
        strExt = LCase(Right(strExe, 3))

IF strExt <> "exe" AND strExt <> "bat" AND strExt <> "cmd" THEN
WshShell.Run "psexec.exe -d -i -e -u COMPUTERNAME\USER -p PASSWORD  cmd /c start "&strExe&"
    "&strRun&" "&strParams, 0, FALSE
ELSE
WshShell.Run "psexec.exe -d -i -e -u COMPUTERNAME\USER -p PASSWORD "&strExe&" "&strRun&"
    "&strParams, 0, FALSE
END IF

    SET WshShell = NOTHING
    SET WshSysEnv = NOTHING
    SET FSO = NOTHING

Dieses einfache Skript ist ein Beispiel für die Verwendung von PsExec mit einer Funktion, die von Mark hinzugefügt wurde, als wir bei Winternals an unserem Protection Manager-Produkt arbeiteten: die Möglichkeit für einen Benutzer mit eingeschränkten Rechten, privilegiertere Anmeldeinformationen bereitzustellen, um PsExec lokal zu starten. Häufiger wird PsExec natürlich von einem Remotestandort ausgeführt, beispielsweise zur Ausführung eines Dienstprogramms, das kein eigenes Remote-, Skripting- oder Automatisierungsframework bereitstellt. Einige der Hauptfeatures von PsExec umfassen die Möglichkeit, eine Binärdatei, die ausgeführt werden soll, in Remotesysteme zu kopieren, sowie die Möglichkeit, Prozessorzugehörigkeit festzulegen. Ein weiteres praktisches Feature von PsExec ist die Möglichkeit, das Skripting für viele Computer gleichzeitig durch Bereitstellen einer Skriptdatei durchzuführen.

Dies ist die vereinfachte Verwendung von PsExec:

PsExec \\computer -u username -p password command

Sie können sie durch Verwendung der in Abbildung 3 dargestellten Schalter erweitern.

Figure 3 PsExec-Schalter

Schalter Beschreibung
-a Gibt die Prozessorzugehörigkeit an.
-c Zeigt an, ob die Anwendung auf das Remotesystem kopiert werden sollte.
-d Gibt an, dass vor dem Beenden nicht auf das Ende des Prozesses gewartet werden soll (es wird nicht auf eine Erfolgs- oder Fehlermeldung gewartet).
-e Lädt unter Verwendung des angegebenen Kontoprofils.
-f Kopiert die Anwendung, selbst wenn diese auf dem Remotesystem vorhanden ist. Stellt sicher, dass Sie die aktuelle (oder eine bestimmte) Version ausführen.
-i Führt die Anwendung interaktiv auf dem Remotesystem aus (erforderlich, wenn einem Endbenutzer jede beliebige Benutzeroberfläche von der Anwendung aus angezeigt werden soll).
-l Führt die Anwendung als Benutzer mit eingeschränkten Rechten aus. Entfernt das Administratorgruppentoken und reduziert Prozessberechtigungen auf eine Ebene, die für ein Mitglied der Benutzergruppe vorhanden wäre. Praktisch, um risikoreiche, mit dem Internet verbundene Anwendungen mit minimalen Berechtigungen auszuführen.
-n Gibt das Zeitlimit an, das abgewartet werden muss, bevor eine Verbindung zu Remotecomputern fehlschlägt.
-priority Führt den Prozess mit der angegebenen Priorität aus. D. h. es wird angegeben, wie Windows die Prozesspriorität für eine bestimmte Aufgabe festlegen soll (-low, -belownormal, -abovenormal, -high oder -realtime).
-s Führt den Prozess mithilfe des Systemkontos aus (praktisch zur Ausführung von Regedit, um auf privilegierte Registrierungsschlüssel zuzugreifen).
-v Kopiert die Anwendung nur dann, wenn die Anwendung, die kopiert wird, neuer ist.
-x Zeigt die Benutzeroberfläche auf dem sicheren Winlogon-Desktop (dies funktioniert nur auf dem lokalen System).
@file Führt den Befehl auf allen Computern aus, die in der Textdatei angegeben werden.

PsFile

PsFile ist ein stärker fokussiertes Tool als PsExec. Es wird speziell verwendet, um zu prüfen, welche Dateien auf dem Remotesystem geöffnet sind und wer sie geöffnet hat. Dies kann nützlich sein, wenn Sie nachverfolgen wollen, welche Dateien geöffnet sind, bevor Sie einen Server neu starten. Wenn Sie herausfinden müssen, welcher Benutzer die Datei gesperrt hat, sodass sie möglicherweise nicht bearbeitet oder gelöscht werden kann, können Sie den Betreffenden manuell benachrichtigen oder die Datei über PsFile schließen. Nachstehend ist die Verwendung von PsFile aufgeführt:

PsFile \\computer -u username -p password 

Dies gibt einfach eine Liste der geöffneten Dateihandles auf dem Remotesystem zurück. Über die Standardverwendung hinaus können Sie auch einen ID-Parameter der Anweisung hinzufügen, indem Sie den Namen der Datei angeben, über die Sie Informationen suchen oder die Sie schließen wollen. Sie können auch den -c-Schalter einschließen, der die mit dem ID-Parameter angegebene Datei schließt.

PsGetSid

PsGetSid ist ebenfalls ein stark fokussiertes Tool. Es teilt Ihnen die Sicherheits-ID (SID) eines Computers, eines Benutzers oder einer Gruppe mit. Dies kann nützlich sein, wenn Sie sicherstellen wollen, dass die Systeme in Ihrer Domäne keine doppelten SIDs haben, oder wenn Sie einfach nur die SIDs aller Benutzer oder Gruppen auf einem System überprüfen wollen. Die Verwendung von PsGetSid erfolgt wie nachstehend aufgeführt:

PsGetSid \\computer -u username -p password account

Beachten Sie, dass für das Konto einen Benutzer, Computer oder eine Gruppe angegeben werden kann. Obwohl die Syntax von PsGetSid einfach ist, sind einige zusätzlichen Parameter verfügbar. Der SID-Parameter gibt das Konto an (Gruppe oder Computer), das eine angegebene SID erhalten hat, und @file führt den Befehl auf allen in der angegebenen Textdatei aufgeführten Computern aus.

PsInfo

PsInfo dient zur Bereitstellung ausführlicher Systeminformationen. Dies wäre offensichtlich am nützlichsten beim Skripting für mehrere Remotesysteme, wobei die Ausgabe an eine Datei (wie z. B. eine Excel®- und datenbankfreundliche CSV-Datei) gesendet wird. Beachten Sie, dass dieses Dienstprogramm ein wichtiges Konzept anwendet, das sich von den meisten anderen Tools unterscheidet. Wenn Sie keinen Computernamen bereitstellen, versucht PsInfo standardmäßig, alle Computer in der Domäne abzufragen. PsInfo wird folgendermaßen verwendet:

PsInfo  \\computer -u username -p password 

Obwohl die Syntax einfach ist, sind zusätzliche Schalter und Parameter verfügbar (siehe Abbildung 4).

Figure 4 PsInfo-Schalter

Schalter Beschreibung
-h Zeigt alle Windows-Updates an.
-s Zeigt alle auf dem System installierten Anwendungen an.
-d Zeigt Datenträger-/Volumeinformationen für das System an.
-c Gibt die Ergebnisse im CSV-Format aus.
-t Gibt ein anderes Trennzeichen für die CSV-Datei als den Standardwert \t an.
Filter Zeigt nur Daten an, die einem vorgegebenen Filter entsprechen.
@file Führt den Befehl auf allen Computern aus, die in der angegebenen Textdatei aufgeführt werden.

PsKill

PsKill ist ein hervorragendes Dienstprogramm zum Beenden von Prozessen auf einem lokalen System oder Remotesystem. Die Verwendung ist sehr einfach, und Sie können einen Prozess zusammen mit allen seinen untergeordneten Prozessen beenden. Die Verwendung von PsKill ähnelt im Großen und Ganzen der Verwendung der anderen Tools, die ich erörtert habe:

PsKill -t \\computer -u username -p password process id | process name

Beachten Sie, dass Sie entweder die ID oder den Namen des Prozesses angeben können, den Sie beenden wollen.

PsList

Ich verwende PsList nicht oft, weil ich ein Anhänger von Process Explorer bin (weitere Informationen finden Sie unter microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx). Aber da es keine Version von Process Explorer gibt, die von einem Remotestandort ausgeführt werden kann, ist PsList ein angemessener Ersatz für einige der von Process Explorer bereitgestellten Schlüsselfunktionen. PsList ist praktisch eine von einem Remotestandort ausführbare Liste eines oder mehrerer Prozesse, die auf einem Remotesystem ausgeführt werden.

Die Verwendung von PsList ist recht einfach:

PsList \\computer -u username -p password account

Wie bei den anderen Tools kann der Kontoparameter einen Benutzer, Computer oder eine Gruppe angeben. Zusätzliche Parameter sind in Abbildung 5 dargestellt.

Figure 5 PsList-Schalter

Schalter Beschreibung
-t Zeigt Informationen auf Threadebene an.
-m Stellt ausführliche Speicherinformationen für alle Prozesse bereit.
-x Zeigt Prozess-, Speicher- und Threadinformationen an.
-t Zeigt Informationen als Prozessstruktur an (ähnlich wie die Process Explorer-Strukturansicht).
-s [n] Wird für die angegebene Anzahl von Sekunden im Task-Manager-Modus ausgeführt. Dies ermöglicht das Anzeigen der Remoteprozessinformationen fast in Echtzeit.
-r [n] Gibt an, wie oft (in Sekunden) aktualisiert werden soll, wenn die Ausführung im Task-Manager-Modus erfolgt.
Name Zeigt Informationen zu Prozessen an, die mit dem angegebenen Namen beginnen.
-e Entspricht dem Prozessnamen genau.
pid Zeigt Informationen zu einem bestimmten Prozess an.

PsList ist leistungsfähig, aber dennoch leicht zu verwenden. Ohne Remotedesktop zu verwenden, können Sie die Remoteprozesse sehr detailliert sehen. Mithilfe dieser Informationen könnten Sie mit PsKill oder PsSuspend fortfahren, wenn beispielsweise ein Prozess vorhanden ist, der eingeschränkt werden muss.

PsLoggedOn

Das Tool PsLoggedOn erklärt sich praktisch von selbst. Das Dienstprogramm zeigt Ihnen, wer in einem System angemeldet ist. Dabei kann es sich um lokale (interaktive) Anmeldungen oder um Netzwerkfreigabeanmeldungen handeln. Ähnlich wie PsFile kann diese Funktion nützlich sein, um zu bestimmen, wer einen Server verwendet, den Sie warten müssen. Die Verwendung ist sehr einfach:

PsLoggedOn \\computer

PsLoggedOn hat nur zwei optionale Parameter: -l zeigt nur lokale Anmeldungen (keine Netzwerkanmeldungen) an, und -x schließt die Anmeldezeit aus.

Obwohl das Tool recht einfach ist, ermöglich PsLoggedOn die einfache Anzeige von Informationen, für die Sie normalerweise ein paar Windows-Speicherorte untersuchen müssten.

PsLogList

Dieses Tool ist eines der allgemein nützlichsten Dienstprogramme. PsLogList bilden die Windows-Ereignisprotokolle im Textformat ab, das dann von Protokollleseprogrammen, Datenbanken oder ganz nach Wunsch von vielen anderen Programmen verwendet werden kann. Der Hauptvorteil besteht darin, dass es die Ereignisprotokolleinträge aus dem binären Format in ein Format konvertiert, das leicht transformiert oder automatisiert werden kann. (Selbstverständlich stehen Ereignisprotokolle in Windows Vista™ systemintern im XML-Format zur Verfügung, doch das ist Thema für einen anderen Artikel.)

Die Verwendung von PsLogList sieht folgendermaßen aus:

PsLogList \\computer -u username -p password

Eine Anzahl zusätzlicher Schalter und Parameter steht ebenfalls zur Verfügung (sieh Abbildung 6).

Figure 6 PsLogList-Schalter

Schalter Beschreibung
-a Sichert nur Ereignisse nach dem angegebenen Datum.
-b Sichert nur Ereignisse vor dem angegebenen Datum.
-c Löscht das Ereignisprotokoll permanent nach Sichern der gewünschten Ausgabe.
-d Zeigt nur Informationen für die angegebene Anzahl von Tagen an.
-e Schließt Ereignisse mit der angegebenen Ereignis-ID aus (es können bis zu 10 angegeben werden).
-f Filtert Ereignistypen (Warnung, Fehler und so weiter).
-g Exportiert das Ereignisprotokoll als EVT-Datei, wofür der -c-Schalter erforderlich ist.
-h Zeigt nur Informationen für die angegebene Anzahl von Stunden an.
-l Speichert aus der angegebenen EVT-Datei.
-m Zeigt nur Informationen für die angegebene Anzahl von Minuten an.
-n Zeigt nur die angegebene Anzahl der aktuellsten Ereignisse an.
-o. Zeigt nur Ereignisse aus einer vorgegebenen Quelle an (-o SRService für den Windows-Systemwiederherstellungsdienst beispielsweise).
-q Schließt Ereignisse aus einer vorgegebenen Quelle aus (das Gegenteil von -o).
-r Kehrt die Reihenfolge der Speicherung von Protokollereignissen vom am wenigsten aktuellen bis zum aktuellsten Ereignis um.
-s Führt Einträge in jeder Zeile in getrennten Feldern auf.
-t Gibt etwas anderes als ein Komma als Trennzeichen für die -s-Ausgabe an.
-w Wartet darauf, dass neue Ereignisse aufgefüllt und in Echtzeit gespeichert werden. Dies gilt nur für das lokale System.
-x Sichert erweiterte Daten aus Ereignisprotokollen.
eventlog Gibt an, welches Ereignisprotokoll gesichert werden soll. Dies ist standardmäßig das System.
@file Führt den Befehl auf allen Computern aus, die in der Textdatei angegeben werden.

Windows-Ereignisprotokolle können ein äußerst leistungsfähiges diagnostisches Tool sein, doch das Schwierige daran ist, die Daten in eine Form zu bringen, die bearbeitet oder konsolidiert werden kann. PsLogList hilft dabei.

PsPasswd

PsPasswd ist ein einfaches, aber dennoch leistungsfähiges Dienstprogramm mit etwa der gleichen Leistungsstärke wie Net.exe, wobei die Verwendung von Remotestandorten und die Automatisierung im Mittelpunkt stehen.

PsPasswd  \\computer -u username -p password Username Newpassword

Sie können einen Computer oder keinen Computer (das lokale System) angeben. Wenn Sie den Computer als \\* angeben, wird das Dienstprogramm für alle Computer in der aktuellen Domäne ausgeführt. Bei PsPasswd steht nur ein zusätzlicher Parameter zur Verfügung: @file führt den Befehl auf allen Computern aus, die in der Textdatei angegeben werden. Auch dieses ist ein sehr elementares, aber äußerst leistungsstarkes Dienstprogramm für mehrere Systeme.

PsService

PsService ermöglicht das Anzeigen und Bearbeiten von Dienststeuerungs-Manager-Informationen auf einem oder mehreren Systemen auf Ihrem Netzwerk. Sie können sogar nach einem bestimmten Dienstnamen auf Systemen in Ihrem Netzwerk suchen.

PsService \\computer -u username -p password command options

Wenn Sie PsService ausführen, repräsentiert „command“ einen der in Abbildung 7 aufgeführten Befehle, und „options“ steht für ein Attribut, das für einen bestimmten Befehl gilt. Wenn keine zusätzlichen Befehlsschalter bereitgestellt werden, gibt PsService vollständige Dienststeuerungs-Manager-Informationen aus.

Figure 7 PsService-Befehle

Befehl Beschreibung
query Fragt einen bestimmten Dienst ab.
config Fragt die Konfigurationsinformationen für einen bestimmten Dienst ab.
setconfig Legt die Konfigurationsinformationen für einen bestimmten Dienst fest.
start Startet einen Dienst.
stop Beendet einen Dienst.
restart Startet einen Dienst neu (hält ihn an und startet ihn).
pause Hält einen Dienst an.
cont Setzt einen angehaltenen Dienst fort.
depend Zeigt an, welche Dienste von einem bestimmten Dienst abhängen.
find Sucht in Ihrem Netzwerk nach einer bestimmten Instanz des Diensts.
security Stellt die Sicherheitsinformationen für einen bestimmten Dienst bereit.

Man kann sich PsService also als eine leistungsfähige, von einem Remotestandort ausführbare Befehlszeilenversion von Services.msc vorstellen, die jedoch die netzwerkweite Anzeige von Diensten (die möglicherweise gefährlich sind) und die Festlegung von Konfigurationsinformationen ermöglicht.

PsShutdown

PsShutdown gehört ebenfalls zu meinen Lieblingsfunktionen. Obwohl man hin und wieder hört, dass Microsoft ein Tool liefert, das diese Aufgabe handhabt (shutdown.exe), sind die Tools doch unterschiedlich. Der wesentliche Unterschied besteht in der Leistungsstärke von PsShutdown: Das Tool kann nämlich ein Remotesystem herunterfahren oder neu starten. Außerdem kann es ein System in den Standbymodus oder Ruhezustand versetzen (also nicht nur herunterfahren oder neu starten), ein System sperren und ein System neu starten, nachdem dem Benutzer für eine bestimmte Zeitdauer eine Nachricht angezeigt wurde.

PsShutdown \\computer -u username -p password

Zur Verwendung mit PsShutdown steht eine ebenfalls Anzahl zusätzlicher Parameter zur Verfügung (siehe Abbildung 8).

Figure 8 PsShutdown-Schalter

Schalter Beschreibung
-a Bricht ein Herunterfahren ab, das bereits im Gange ist und von PsShutdown initiiert wurde.
-c Ermöglicht einem interaktiven Benutzer, das Herunterfahren abzubrechen.
-d Hält den Computer an (Standby).
-e Codes für Ursachen des Herunterfahrens. Ich empfehle Ihnen, dabei die Anleitungen auf der Microsoft-Website zu nutzen, da ihre Verwendung mit PsShutdown und der integrierten Datei „shutdown.exe“ problematisch sein kann. Weitere Informationen finden Sie unter msdn2.microsoft.com/en-us/library/aa376885.aspx (auf Englisch).
-f Erzwingt die Beendigung aller Anwendungen, die ausgeführt werden.
-h Versetzt den Computer in den Ruhezustand.
-k Schaltet den Computer ab (startet ihn neu, wenn der Abschaltvorgang nicht unterstützt wird).
-l Sperrt den Computer.
-m Legt die Nachricht fest, die für beliebige interaktive Benutzer angezeigt werden soll.
-n Gibt das Zeitlimit an, das abgewartet werden muss, bevor eine Verbindung zu Remotecomputern fehlschlägt.
-o. Meldet den Konsolenbenutzer ab.
-r Startet den Computer neu.
-s Fährt den Computer herunter, aber schaltet ihn nicht aus.
-t Countdownzeit, bevor der Befehl zum Herunterfahren ausgeführt wird, oder konkrete Zeit zum Abschalten.
-v Zeigt bis zum Herunterfahren die Nachricht für die Benutzer an.
@file Führt den Befehl auf allen Computern aus, die in der Textdatei angegeben werden.

Sie sehen, dass PsShutdown ein sehr leistungsfähiges, stark konfigurierbares Steuerdienstprogramm für die Systemsleistungsstärke ist, das sich verhältnismäßig leicht verwenden lässt.

PsSuspend

PsSuspend ist ein praktisches Dienstprogramm, wenn Sie einen nicht autorisierten Prozess vorübergehend unter Kontrolle bringen wollen oder wenn ein Prozess mit hoher CPU-Auslastung vorübergehend angehalten werden soll, ohne dass dabei Daten oder Anwendungskontext verloren gehen.

PsSuspend \\computer -u username -p password process ID

Sie können die Prozess-ID mithilfe von PsList abrufen. Wenn Sie einen Prozess angehalten haben, können Sie ihn mithilfe des -r-Schalters wieder fortsetzen. Beachten Sie, dass das Konzept des Anhaltens und Fortsetzen eines Prozesses auch von Process Explorer implementiert wird, obwohl dies nur lokal funktioniert. Offensichtlich kann PsSuspend sowohl Remoteprozesse als auch lokale Prozesse anhalten und fortsetzen, sodass das Tool leistungsfähiger als die integrierte Implementierung im Process Explorer ist.

Schlussbemerkung

Meiner Meinung nach ist die PsTools-Suite eine äußerst nützliche Sammlung von Dienstprogrammen. Zusammen mit den übrigen Sysinternals-Dienstprogrammen (nämlich Regmon, Filemon, Process Explorer und jetzt auch Process Monitor) sind PsTools die ersten Programme, die ich in meinen Pfad stelle, wenn ich Windows auf irgendeinem meiner Systeme neu installiere. Ich hoffe, dass Sie durch diese Rubrik mit den PsTools vertraut geworden sind, wenn Sie die Tools zuvor nicht kannten. Wenn sie Ihnen bereits bekannt waren, hoffe ich, dass Sie ein paar zusätzliche Kenntnisse gewonnen haben. Mein Dank geht natürlich an Mark Russinovich, der diese Tools all die Jahre kostenlos zur Verfügung gestellt und mich bei diesem Artikel unterstützt hat.

Wes Miller ist Entwicklungsmanager bei Pluck (www.pluck.com) in Austin, Texas. Davor arbeitete er bei Winternals Software in Austin und bei Microsoft als Programm-Manager und Produktmanager für Windows. Sie können Wes erreichen unter technet@getwired.com.

© 2008 Microsoft Corporation und CMP Media, LLC. Alle Rechte vorbehalten. Die nicht genehmigte teilweise oder vollständige Vervielfältigung ist nicht zulässig.