Diese 5 Dinge musst du bei der PowerShell und Dateien beachten

Überblick und Wissenswertes

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.

Auslesen, Ausgeben 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.

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.

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.

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:

Tolles lesenswertes Buch

Dieser Artikel beinhaltet Partner-Links. Durch einen Klick darauf ge­lan­gt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhält IT-Learner eine kleine Provision. Der Preis ändert sich für euch nicht. Danke für eure Unterstützung! Letzte Aktualisierung am 15.06.2024

b3136a2846634c259a84097f223dfd8c
Der Blogbetreiber und Autor: Markus Elsberger

Über den Autor

Mein Name ist Markus Elsberger und ich beschäftige mich mit der Administration von Windows und Linux Systemen sowie mit diversen Themen bzgl. Netzwerktechnik. In meiner Lehrtätigkeit erstelle ich verschiedene Szenarien und teste auch verschiedene Konfigurationen, welche ich in diesem Blog festhalten möchte.


Kostenlose Befehlsreferenzen und E-Books
(Netzwerkanalyse, Benutzerverwaltung, Festplattenkonfiguration, u. v. m.)


Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

×