Tags: Kommandozeile, Tools, PowerShell
Wenn mehrere Versionen einer ausführbaren Datei oder verschiedene Programme mit dem gleichen Dateinamen auf einem Rechner existieren, dann ist nicht klar, welches davon startet, wenn man es ohne Pfadangabe aufruft. Um dies herauszufinden, bieten die Bordmittel ein spartanisches Tool, aber besser geht das mit einer Freeware.
Bei kritischen Aufgaben der Systemverwaltung ist es eine gute Praxis, Anwendungen mit vollem Pfad aufzurufen, um sicher zu gehen, dass dem privilegierten User kein bösartiges Programm untergeschoben wird.
Verzichtet man zusätzlich noch auf die Dateiendung, dann kann es sich dabei sogar um ein Script handeln, das im Pfad vor der der gewünschten Programmdatei liegt. Um sich die Tipparbeit dennoch zu sparen, kann man zuerst den Pfad des Programms verifizieren.
Integriertes Dienstprogramm
Unter Unix bzw. Linux gibt es schon seit jeher den Befehl which, um anzuzeigen, von wo ein bestimmtes Programm gestartet würde. Das Gegenstück dazu unter Windows ist where.exe:
where certutil
Als Ergebnis erhält man den Dateinamen inklusive des vollständigen Pfads.
Unter PowerShell existiert jedoch mit Where ein vordefiniertes Alias für Where-Object, so dass man es dort so aufrufen muss:
where.exe certutil
Kostenloses Tool findEXE
Die Freeware findEXE von Uwe Sieber leistet das Gleiche, ist darüber hinaus aber auch in der Lage, das assoziierte Programm zu finden, wenn man den Namen einer Datendatei eingibt:
FindEXE.exe beispiel.txt
In diesem Fall würde man standardmäßig den vollständigen Pfad zu notepad.exe erhalten.
Beide Tools schauen nicht nur in die Verzeichnisse des Suchpfads, sondern auch in den aktuellen Ordner. Das ist unter cmd.exe nützlich, weil die alte Kommandozeile die Programme von dort startet, bevor sie den Pfad auswertet.
Unter PowerShell hat das jedoch keine Bedeutung, weil diese das aktuelle Verzeichnis bei der Suche nach ausführbaren Dateien nicht berücksichtigt. Wenn man bloß den Dateinamen eingibt, erhält man eine Fehlermeldung, wonach das Programm nicht gefunden werden konnte. Dort muss man dem Dateinamen ein ".\" voranstellen.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- ScriptRunner Portal Edition R4: Support für Microsoft Graph, überarbeitetes Portal, zentrale Execution-Policy
- PowerShell-Scripts kompilieren mit Win-PS2EXE
- WSUS Automated Maintenance im Test: Updates ablehnen und entfernen, Datenbank und IIS optimieren
- Windows Terminal 1.6 Preview erhält GUI für Einstellungen, v1.5 nun offizielles Release
- PowerShell 7.1 (als Store-App) verfügbar, Updates für PSReadLine, SecretManagement und PowerShellGet
Weitere Links