Ich fand, dass die PowerShell-Programmierung den Aufwand nicht wert ist.
Ich habe mehrere Jahre Erfahrung mit Shell-Skripten unter Unix, aber ich fand es enorm schwierig, mit PowerShell viel zu tun.
Bei vielen Funktionen müssen Sie die Windows-Verwaltungsoberfläche abfragen und SQL-ähnliche Befehle eingeben, um die benötigten Informationen zu erhalten.
Ich wollte zum Beispiel ein Skript schreiben, um alle Dateien mit einem bestimmten Suffix aus einem Verzeichnisbaum entfernen. Unter Unix wäre dies eine einfache ...
find . -name \*.xyz -exec rm {} \;
Nach ein paar Stunden Herumspielen mit Scripting.FileSystemObject
y WScript.Shell
und der Eingabe von "SELECT * FROM Win32_ShortcutFile WHERE Drive = '" & drive & "' AND Path = '" & searchFolder & "'" gab ich schließlich auf und entschied mich für die Windows Explorer-Funktion Suche und machen Sie es einfach manuell. Es gibt wahrscheinlich eine Möglichkeit, das zu tun, was ich wollte, aber ich habe nichts Offensichtliches gesehen und alle Beispiele auf der MSDN-Website waren so trivial, dass sie wertlos waren.
EDIT Nachdem ich das geschrieben hatte, stöberte ich natürlich noch ein bisschen herum und fand, was ich vermisst hatte: die -recurse
Option des remove-item-Befehls fehlerhaft ist (offenbart, wenn Sie get-help remove-item -detailed
).
Ich hatte es mit "remove-item -filter '* .xyz' -recurse" versucht und es hat nicht funktioniert, also habe ich es aufgegeben.
Es hat sich herausgestellt, dass Sie Folgendes verwenden müssen get-childitem -filter '*.xyz' -recurse | remove-item