Die auf Windows PowerShell-Laufwerken angezeigten Objekte, z. B. Dateien und Ordner auf Dateisystemlaufwerken, und die Registrierungsschlüssel auf Windows PowerShell-Registrierungslaufwerken werden in Windows PowerShell als Elemente bezeichnet. Die Namen der Cmdlets für die Arbeit mit Elementen enthalten das Substantiv Item.

Die Ausgabe des Befehls Get-Command -Noun Item zeigt, dass neun Windows PowerShell-Cmdlets für Elemente verfügbar sind.

PS> Get-Command -Noun Item

CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Clear-Item                      Clear-Item [-Path] <String[]...
Cmdlet          Copy-Item                       Copy-Item [-Path] <String[]>...
Cmdlet          Get-Item                        Get-Item [-Path] <String[]> ...
Cmdlet          Invoke-Item                     Invoke-Item [-Path] <String[...
Cmdlet          Move-Item                       Move-Item [-Path] <String[]>...
Cmdlet          New-Item                        New-Item [-Path] <String[]> ...
Cmdlet          Remove-Item                     Remove-Item [-Path] <String[...
Cmdlet          Rename-Item                     Rename-Item [-Path] <String>...
Cmdlet          Set-Item                        Set-Item [-Path] <String[]> ...

Erstellen neuer Elemente (New-Item)

Verwenden Sie zum Erstellen eines neuen Elements im Dateisystem das Cmdlet New-Item. Fügen Sie den Path-Parameter mit dem Pfad zum Element sowie den ItemType-Parameter mit dem Wert "file" oder "directory" ein.

Wenn Sie z. B. im Verzeichnis "C:\Temp" das Verzeichnis "New.Directory" erstellen möchten, geben Sie Folgendes ein:

PS> New-Item -Path c:\temp\New.Directory -ItemType Directory

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\temp

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18  11:29 AM            New.Directory

Ändern Sie zum Erstellen einer Datei den Wert des ItemType-Parameters in "file". Wenn Sie z. B. im Verzeichnis "New.Directory" eine Datei mit der Bezeichnung "file1.txt" erstellen möchten, geben Sie Folgendes ein:

PS> New-Item -Path C:\temp\New.Directory\file1.txt -ItemType file

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\temp\New.Directory

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-18  11:44 AM          0 file1

Mit demselben Verfahren können Sie auch einen neuen Registrierungsschlüssel erstellen. Das Erstellen eines neuen Registrierungsschlüssels ist sogar noch einfacher, da es in der Windows-Registrierung nur den Elementtyp Schlüssel gibt. (Registrierungseinträge sind Elementeigenschaften.) Wenn Sie zum Beispiel im Unterschlüssel "CurrentVersion" den Schlüssel "_Test" erstellen möchten, geben Sie Folgendes ein:

PS> New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\_Test

   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micros
oft\Windows\CurrentVersion

SKC  VC Name                           Property
---  -- ----                           --------
  0   0 _Test                          {}

Achten Sie bei der Eingabe eines Registrierungspfads unbedingt auf die Eingabe des Doppelpunkts (:) in den Namen der Windows PowerShell-Laufwerke "HKLM:" und "HKCU:". Ohne den Doppelpunkt erkennt Windows PowerShell den Laufwerknamen im Pfad nicht.

Registrierungswerte sind keine Elemente

Wenn Sie mit dem Cmdlet Get-ChildItem nach Elementen in einem Registrierungsschlüssel suchen, werden nie die eigentlichen Registrierungseinträge oder deren Werte angezeigt.

Zum Beispiel enthält der Registrierungsschlüssel HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run normalerweise mehrere Registrierungseinträge, die Anwendungen darstellen, die beim Systemstart ausgeführt werden.

Wenn Sie allerdings mit Get-ChildItem nach untergeordneten Elementen im Schlüssel suchen, wird lediglich der Unterschlüssel OptionalComponents angezeigt:

PS> Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Run
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Micros
oft\Windows\CurrentVersion\Run
SKC  VC Name                           Property
---  -- ----                           --------
  3   0 OptionalComponents             {}

Die Behandlung von Registrierungseinträgen als Elemente wäre sicherlich komfortabel, es ist jedoch nicht immer möglich, einen eindeutigen Pfad zu einem Registrierungseintrag anzugeben. In der Pfadnotation wird nicht zwischen dem Registrierungsunterschlüssel Run und dem Registrierungseintrag (Default) im Unterschlüssel Run unterschieden. Da die Namen von Registrierungseinträgen auch keinen umgekehrten Schrägstrich (\) enthalten dürfen, können Sie nicht mithilfe der Pfadnotation zwischen dem Registrierungseintrag Windows\CurrentVersion\Run und dem Unterschlüssel unter diesem Pfad unterscheiden.

Umbenennen vorhandener Elemente (Rename-Item)

Verwenden Sie zum Umbenennen einer Datei oder eines Ordners das Cmdlet Rename-Item. Mit dem folgenden Befehl wird der Name der Datei file1.txt in fileOne.txt geändert.

PS> Rename-Item -Path C:\temp\New.Directory\file1.txt fileOne.txt

Das Cmdlet Rename-Item kann den Namen einer Datei oder eines Ordners ändern, aber keine Elemente verschieben. Der folgende Befehl führt zu einem Fehler, da dabei versucht wird, die Datei aus dem Verzeichnis "New.Directory" in das Verzeichnis "Temp" zu verschieben.

PS> Rename-Item -Path C:\temp\New.Directory\fileOne.txt c:\temp\fileOne.txt
Rename-Item : Cannot rename because the target specified is not a path.
At line:1 char:12
+ Rename-Item  <<<< -Path C:\temp\New.Directory\fileOne c:\temp\fileOne.txt

Verschieben von Elementen (Move-Item)

Verwenden Sie zum Verschieben einer Datei oder eines Ordners das Cmdlet Move-Item.

Mit dem folgenden Befehl verschieben Sie z. B. das Verzeichnis "New.Directory" aus dem Verzeichnis "C:\temp" in das Stammverzeichnis von Laufwerk "C:". Wenn Sie das Verschieben des Elements bestätigen möchten, fügen Sie den PassThru-Parameter des Cmdlet Move-Item hinzu. Ohne Passthru zeigt das Cmdlet Move-Item keine Ergebnisse an.

PS> Move-Item -Path C:\temp\New.Directory -Destination C:\ -PassThru

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18  12:14 PM            New.Directory

Kopieren von Elementen (Copy-Item)

Wenn Sie mit Kopiervorgängen in anderen Shells bereits vertraut sind, ist das Verhalten des Cmdlet Copy-Item in Windows PowerShell für Sie möglicherweise ungewöhnlich. Wenn Sie ein Element von einem Speicherort an einen anderen kopieren, wird mit Copy-Item standardmäßig nicht der Inhalt kopiert.

Beim Kopieren des Verzeichnisses New.Directory vom Laufwerk "C:" in das Verzeichnis "C:\temp" wird beispielsweise der Befehl erfolgreich ausgeführt, doch werden die Dateien im Verzeichnis "New.Directory" nicht kopiert.

PS> Copy-Item -Path C:\New.Directory -Destination C:\temp

Wenn Sie den Inhalt von C:\temp\New.Directory anzeigen, stellen Sie fest, dass keine Dateien enthalten sind:

PS> Get-ChildItem -Path C:\temp\New.Directory
PS>

Wieso kopiert das Cmdlet Copy-Item den Inhalt nicht an den neuen Speicherort?

Das Cmdlet Copy-Item wurde für die allgemeine Verwendung entwickelt, also nicht nur zum Kopieren von Dateien und Ordnern. Auch beim Kopieren von Dateien und Ordnern möchten Sie möglicherweise nur den Container, aber nicht die enthaltenen Elemente kopieren.

Wenn Sie den Inhalt eines Ordners kopieren möchten, fügen Sie den Recurse-Parameter des Cmdlet Copy-Item in den Befehl ein. Wenn Sie bereits das Verzeichnis ohne dessen Inhalt kopiert haben, fügen Sie den Force-Parameter hinzu, mit dem Sie den leeren Ordner überschreiben können.

PS> Copy-Item -Path C:\New.Directory -Destination C:\temp -Recurse -Force -Passthru
    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\temp

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18   1:53 PM            New.Directory

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\temp\New.Directory

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-18  11:44 AM          0 file1

Löschen von Elementen (Remove-Item)

Zum Löschen von Dateien und Ordnern verwenden Sie das Cmdlet Remove-Item. Bestimmte Windows PowerShell-Cmdlets, z. B. Remove-Item, die erhebliche und nicht rückgängig zu machende Änderungen vornehmen, erfordern häufig eine Bestätigung für die Eingabe des Befehls. Wenn Sie z. B. versuchen, den Ordner New.Directory zu entfernen, werden Sie aufgefordert, den Befehl zu bestätigen, da der Ordner Dateien enthält:

PS> Remove-Item C:\New.Directory

Confirm
The item at C:\temp\New.Directory has children and the -recurse parameter was not
specified. If you continue, all children will be removed with the item. Are you
 sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):

Da Yes die Standardantwort darstellt, drücken Sie zum Löschen des Ordners und der Dateien die EINGABETASTE. Verwenden Sie zum Entfernen des Ordners ohne Bestätigung den -Recurse-Parameter.

PS> Remove-Item C:\temp\New.Directory -Recurse

Ausführen von Elementen (Invoke-Item)

Windows PowerShell verwendet zum Ausführen der Standardaktion für eine Datei oder einen Ordner das Cmdlet Invoke-Item. Diese Standardaktion wird durch den Standardanwendungshandler in der Registrierung festgelegt. Das Ergebnis entspricht einem Doppelklick auf das Element in Windows Explorer.

Führen Sie zum Beispiel den folgenden Befehl aus:

PS> Invoke-Item C:\WINDOWS

Es wird ein Explorer-Fenster mit dem Ordner "C:\Windows" angezeigt, als hätten Sie einen Doppelklick auf den Ordner "C:\Windows" ausgeführt.

Angenommen, Sie rufen die Datei Boot.ini in einem älteren System als Windows Vista auf:

PS> Invoke-Item C:\boot.ini

Wenn der Dateityp INI dem Editor zugeordnet ist, wird die Datei "boot.ini" im Editor geöffnet.




Inhaltsverzeichnis