Überblick und Wissenswertes
Möchtest du mit der PowerShell Dateinamen auslesen und mit Dateien operieren? Das Arbeiten mit Dateien in der PowerShell ist eigentlich sehr einfach. Die PowerShell kennt nämlich sämtliche gängigen Befehle wie dir oder ls. Allerdings beim Wechsel in andere Verzeichnisse muss man beachten, dass es anstatt cd.. dann cd .. heißt.
Also man darf das Leerzeichen nicht vergessen. Da die PowerShell alles als Objekte auffasst, kann man die Größe einer Datei direkt abfragen. Die PowerShell kennt weiterhin nicht nur das klassische Dateisystem, sondern man kann sich mit get-psdrive sämtliche momentanen Lokationen anzeigen lassen.
Der Wechsel in andere Laufwerke erfolgt dabei wie gewohnt durch den Laufwerksbuchstaben, gefolgt von einem Doppelpunkt. Wenn man in ein anderes Verzeichnis gewechselt hat, so kann man sich alle dort befindlichen Inhalte auflisten lassen.
Es ist dabei egal, ob man dir, ls oder get-childitem verwendet. Alle drei Befehle liefern dieselbe Ausgabe. PowerShell konform ist natürlich das Cmdlet get-childitem.
PowerShell Laufwerke anzeigen
Beispiel: Zunächst wechseln wir in das HKLM Verzeichnis und lassen uns anschließend sämtliche Registry Werte von Windows Mail anzeigen.
cd HKLM:
cd SoftwareMicrosoft
Get-ItemProperty '.Windows Mail'
Die Werte in der Registry bekommt man nur zu sehen, wenn man das Cmdlet Get-ItemProperty verwendet. Das liegt daran, dass die Registry Werte eine Eigenschaft (Property) des Registry-Objekts sind, so wie Größe oder letztes Zugriffsdatum die Eigenschaft einer Datei sind.
Um das Arbeiten mit der PowerShell etwas zu vereinfachen, kann man sich auch ein neues Laufwerk anlegen, welches auf einen bestimmten Pfad verweist.
New-PsDrive -name Workspace -psprovider FileSystem -root c:\Workspace
Der Ordner Workspace muss natürlich im Laufwerk c: vorhanden sein. Abgesehen davon, muss man auch die dementsprechenden Rechte besitzen.
Per PowerShell Dateinamen auslesen und filtern von Dateien
Das Anzeigen, und Ausgeben von Dateien haben wir mit Get-Childitem schon herausgefunden. Möchte man aber bestimmte Dateien ausschließen, so bietet der Parameter -exclude genau diese Möglichkeit.
Beispiel 1:
Auflisten aller Dateien im Verzeichnis c:\Workspace ohne *.tmp, und *.temp.
Get-childitem c:\Workspace -Exclude *.tmp, *.temp
Beispiel 2:
Auflisten aller Dateien im Verzeichnis c:\Workspace ohne *.tmp und es sollen ausschließlich der Dateiname und die Dateilänge mit angegeben werden.Damit kannst du dann auch mit PowerShell Dateinamen auslesen.
Get-childitem c:\Workspace -Exclude *.tmp | Select-Object name,length
Die Pipeline ist hier natürlich sehr hilfreich und nützlich. Wie man solche Befehlsketten mit der Pipe im allgemeinen Aufbau, könnt hier nachlesen oder aber auch im Video die Funktionsweise ansehen.
Zum Artikel: Powershell Pipeline richtig verwenden
Objekteigenschaften mit Get-Member anzeigen
Eine Übersicht über alle Objekteigenschaften und Funktionen erhält man mit dem Cmdlet Get-Member. Man übergibt einfach das Objekt mittels der Pipe (|) an Get-Member.
Man kann nicht nur mit PowerShell Dateinamen auslesen, sondern noch viele weitere Konfigurationen durchführen. Hierfür hilft das Cmdlet Get-Member entsprechend weiter.

Beispiel 1: Welche Eigenschaften hat eine Datei?
Get-Childitem | Get-Member
Hier sehen wir, wie viele verschiedene Eigenschaften eine Datei hat!
Beispiel 2:
Möchte man sich z. B. nur den letzten Zugriff ausgeben lassen, so benötigt man hierfür die Eigenschaft LastAccessTime.
Get-Childitem | Select-Object -Property LastAccessTime
Beispiel 3:
Eine tolles Cmdlet ist auch Group-Object. Hiermit kann man eine Liste von Objekten in Gruppen einteilen. Man kann sich z. B. alle Dienste in zwei Gruppen ausgeben lassen. Also die gestarteten und die gestoppten.
Get-Service | Group-Object status
Beispiel 4:
Viele weitere Informationen erhält man mit dem Cmdlet Measure-Object. Dieses Cmdlet ist sehr umfangreich. Am besten in der Hilfe nachsehen, welche Möglichkeiten hier geboten sind. Hier ein kleines Beispiel. Diese Ausgabe ist selbsterklärend.
Get-Childitem | Measure-Object length -average -sum -maximum -minimum
Anlegen, Löschen und Verschieben von Dateien / Ordnern
Für das Löschen einer Datei oder eines Verzeichnisses bietet die Powershell das Cmdlet Remove-Item. Interessanter ist es jedoch, wenn man hier noch eine Bedingung anfügt. Z. B. sollen alle Dateien gelöscht werden, welche größer als 2 MB sind.
Wenn du per PowerShell Dateinamen auslesen lässt, kannst du dir auch mithilfe der Pipe und entsprechenden Parametern die kompletten Namen ausgeben lassen. (fullname)
Get-childitem | where-object {$_.length –gt 2000000} | foreach-object {remove-item $_.fullname}
Das Anlegen neuer Dateien gelingt mit New-Item gefolgt vom Typ. Also z. B. Directory für Verzeichnis.
New-Item -ItemType directory testordner
Zu guter Letzt kann man Dateien natürlich auch verschieben. Hierzu nimmt man Move-item
Move-item .testordner c:
Keine Produkte gefunden.
Fazit und Ausblick
Man kann nicht nur mit der PowerShell Dateinamen auslesen. Sondern noch viele weitere Dateioperationen sowie Ordneroperationen durchführen. Gerade für Systemadministratoren ist die Windows PowerShell ein notwendiges Werkzeug.
Auch wenn der Einstieg vielleicht nicht allzu leicht ist, so wird man aber anschließend damit belohnt, dass viele administrativen Tätigkeiten wesentlich schneller und einfacher funktionieren.




