PowerShell löschen Sie die Datei, falls vorhanden

PowerShell löschen Sie die Datei, falls vorhanden

Wie jede andere Shell ist PowerShell eine leistungsstarke Shell- und Skriptsprache, die von Microsoft entwickelt wurde. PowerShell wurde ursprünglich für Windows entwickelt und ist jetzt für alle wichtigen Plattformen verfügbar. Ausgehend von PowerShell 6 ist es zu einer kostenlosen und offenen Bewerbung geworden.

Ähnlich wie bei jedem anderen Shell -Scripting können wir PowerShell verwenden, um von grundlegend bis fortgeschrittenen Sachen zu automatisieren. In diesem Handbuch finden Sie in der Verwendung von PowerShell, um eine Datei zu löschen, wenn sie unter Linux vorhanden ist.

Überprüfen Sie, ob eine Datei vorliegt

Ähnlich wie bei anderen Shells wird PowerShell mit eigenen Befehlen geliefert, um verschiedene Aufgaben auszuführen, die als CMDLets bekannt sind. Um eine bestimmte Aussage in Bash zu testen, verwenden wir die Bash -Testanweisung, die prüft, ob ein bestimmtes Argument wahr oder falsch ist. Die Testaussage ist ein allgemeiner Mechanismus, der eine Vielzahl möglicher Befehle berechnen kann.

Im Falle von PowerShell gibt es jedoch bestimmte CMDlets für eine bestimmte Aufgabe. Hier benötigen wir einen Testweg, um zu überprüfen, ob die angegebene Datei am definierten Ort vorhanden ist.

Hier ist eine einfache Demonstration von Testpfaden in Aktion.

$ Test -Path -Path

Standardmäßig prüft der Testweg, ob das angegebene Element am beschriebenen Ort vorhanden ist. Wenn es existiert, gibt es den booleschen Wert "wahr" zurück. Ansonsten gibt es "falsch" zurück.

Löschen einer Datei in PowerShell

In Linux würden wir den Befehl rm verwenden, um eine Datei oder ein Verzeichnis zu löschen. Im Falle von PowerShell verwendet es das CMDLET REMET-ISTEM.

Schauen Sie sich die Microsoft-Dokumentation zum Entfernen an.

Um eine bestimmte Datei zu entfernen, führen Sie den folgenden Befehl aus.

$ Remove-item

Um ein Verzeichnis zu entfernen, benötigen wir eine zusätzliche Option "-Recurse".

$ Remove-item -Wiederholen

Löschen von Dateien (en), wenn existiert

Jetzt können wir beide Methoden miteinander kombinieren und ein einfaches Skript erstellen, das eine Datei löscht, wenn sie am Zielort vorliegt.

Weisen Sie zunächst eine Variable zu, die den Wert des Dateipfads enthält.

$ $ Filelocation = ""

Verwenden Sie als Nächst.

$ Test-Path $ Filelocation

Abhängig vom Rückgabewert von Test-Bad können wir die Entscheidung treffen, die Zieldatei zu entfernen. Wir können die PowerShell If-ELSE-Anweisung verwenden, um die Aktion zu bestimmen.

if (Test-Path $ Dateiname = true)
Entfernen Sie-Punkt $ Dateiname
$

Fügen wir für jedes mögliche Ergebnis einige zusätzliche Nachrichten hinzu.

if (Test-Path $ filelocation)
$ $ Filelocation entfernen
Schreibhost "$ filelocation wird entfernt"

anders
Schreibhost "$ filelocation existiert nicht"

Implementierung in ein PowerShell -Skript

Es ist Zeit, alle Codes in ein geeignetes PowerShell -Skript zu setzen. Ähnlich wie bei Bash -Skripten können wir mit PowerShell -Skripten verschiedene Aufgaben mithilfe von PowerShell -CMDlets und -befehlen automatisieren. Unter Linux teilen sowohl PowerShell- als auch Bash -Skripte strukturelle Ähnlichkeiten.

Erstens brauchen wir den Standort des ausführbaren PowerShell -Standorts. Es ist wichtig, da es ein Teil des Shebang sein wird. Führen Sie den folgenden Befehl aus.

$ was PowerShell

Wir können jetzt all diese Teile in ein einzelnes PowerShell -Skript zusammenfügen. Ein PowerShell -Skript wird mit der Dateierweiterung PS1 geliefert.

$ nano delete-if exist.PS1

Geben Sie nun den Code ein, den wir bisher entwickelt haben.

$ Filelocation = ""
if (Test-Path $ filelocation)
$ $ Filelocation entfernen
Schreibhost "$ filelocation wird entfernt"

anders
Schreibhost "$ filelocation existiert nicht"

Speichern Sie die Datei und schließen Sie den Editor. Markieren Sie die Datei als ausführbare Datei.

$ chmod +x delete-if-exist.PS1

Schließlich führen Sie das Skript aus.

$ ./Löschen-IF-exist.PS1

Besondere Situationen

Löschen von schreibgeschützten Dateien

Das Cmdlet entfernen kann nicht existierende oder schreibgeschützte Dateien löschen. In einer solchen Situation können wir den Befehl entfernen, den Befehl zu löschen, unabhängig von der Dateiberechtigung ändern. Das Flag „-Verbose“ druckt eine Schritt-für-Schritt-Ausgabe aus, um das Debuggen zu erleichtern.

$ Remove -item -Verbose -Force $ filelocation

Lassen Sie es uns im Skript aktualisieren.

$ Filelocation = ""
if (Test-Path $ filelocation)
Remove -item -Verbose -force $ filelocation
Schreibhost "$ filelocation wird entfernt"

anders
Schreibhost "$ filelocation existiert nicht"

Letzter Gedanke

Diese Anleitung zeigt, wie Sie das Vorhandensein einer Datei überprüfen und auf dem Ergebnis basieren, wie Sie sie mit dem CMDLet entfernen können. Wenn die Datei nur schreibgeschützt ist oder die Erlaubnis abgelehnt ist, können wir den Parameter „-force“ verwenden, um sie gewaltsam zu löschen. Schließlich haben wir das gesamte Skript implementiert.

Dies ist eine sehr einfache, aber effektive Möglichkeit, eine Datei/ein Verzeichnis der Wahl zu entfernen. Wie gezeigt, kann diese Gesamtmethode jedoch nur ein einzelnes Element entfernen. Es ist möglich, die Liste der Dateien aus einem Verzeichnis zu erhalten und eine Schleife zu verwenden, um sie schrittweise zu löschen.

Happy Computing!