Copy-Item

Kopiert ein Element von einem Speicherort an einen anderen Speicherort.

Syntax

Copy-Item
    [-Path] <String[]>
    [[-Destination] <String>]
    [-Container]
    [-Force]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-Recurse]
    [-PassThru]
    [-Credential <PSCredential>]
    [-WhatIf]
    [-Confirm]
    [-FromSession <PSSession>]
    [-ToSession <PSSession>]
    [<CommonParameters>]
Copy-Item
    -LiteralPath <String[]>
    [[-Destination] <String>]
    [-Container]
    [-Force]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-Recurse]
    [-PassThru]
    [-Credential <PSCredential>]
    [-WhatIf]
    [-Confirm]
    [-FromSession <PSSession>]
    [-ToSession <PSSession>]
    [<CommonParameters>]

Beschreibung

Das Copy-Item Cmdlet kopiert ein Element von einem Speicherort in einen anderen Speicherort im gleichen Namespace. Sie kann beispielsweise eine Datei in einen Ordner kopieren, aber sie kann keine Datei in ein Zertifikatlaufwerk kopieren.

Dieses Cmdlet wird nicht ausgeschnitten oder gelöscht, die Elemente kopiert werden. Die bestimmten Elemente, die das Cmdlet kopieren kann, hängen vom PowerShell-Anbieter ab, der das Element verfügbar macht. Sie kann z. B. Dateien und Verzeichnisse in einem Dateisystemlaufwerk und Registrierungsschlüssel und Einträgen auf dem Registrierungslaufwerk kopieren.

Dieses Cmdlet kann Elemente im gleichen Befehl kopieren und umbenennen. Geben Sie zum Umbenennen eines Elements den neuen Namen im Wert des Zielparameters ein. Verwenden Sie das Rename-Item Cmdlet, um ein Element umzubenennen und nicht zu kopieren.

Beispiele

Beispiel 1: Kopieren einer Datei in das angegebene Verzeichnis

In diesem Beispiel wird die mar1604.log.txt Datei in das C:\Presentation Verzeichnis kopiert. Die ursprüngliche Datei wird nicht gelöscht.

Copy-Item "C:\Wabash\Logfiles\mar1604.log.txt" -Destination "C:\Presentation"

Beispiel 2: Kopieren von Verzeichnisinhalten in ein vorhandenes Verzeichnis

In diesem Beispiel wird der Inhalt des C:\Logfiles Verzeichnisses in das vorhandene C:\Drawings Verzeichnis kopiert. Das Logfiles Verzeichnis wird nicht kopiert.

Wenn das Logfiles Verzeichnis Dateien in Unterverzeichnissen enthält, werden diese Unterverzeichnisse mit ihren Dateibäumen intakt kopiert. Standardmäßig wird der Containerparameter auf True festgelegt, wodurch die Verzeichnisstruktur beibehalten wird.

Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings" -Recurse

Hinweis

Wenn Sie das Verzeichnis in die Kopie einschließen müssen, entfernen Sie den Logfiles\*Pfad. Beispiel:

Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings" -Recurse

Beispiel 3: Kopieren von Verzeichnis und Inhalt in ein neues Verzeichnis

In diesem Beispiel wird der Inhalt des C:\Logfiles Quellverzeichniss kopiert und ein neues Zielverzeichnis erstellt. Das neue Zielverzeichnis \Logs wird in C:\Drawings.

Wenn Sie den Namen des Quellverzeichniss einschließen möchten, kopieren Sie sie in ein vorhandenes Zielverzeichnis, wie in Beispiel 2 dargestellt. Oder benennen Sie das neue Zielverzeichnis mit demselben wie das Quellverzeichnis.

Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings\Logs" -Recurse

Hinweis

Wenn der Pfad enthält \*, werden alle Dateiinhalte des Verzeichnisses, einschließlich der Unterverzeichnisstrukturen, in das neue Zielverzeichnis kopiert. Beispiel:

Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings\Logs" -Recurse

Beispiel 4: Kopieren einer Datei in das angegebene Verzeichnis und Umbenennen der Datei

In diesem Beispiel wird das Cmdlet verwendet, um das Copy-ItemGet-Widget.ps1 Skript aus dem \\Server01\Share Verzeichnis in das \\Server12\ScriptArchive Verzeichnis zu kopieren. Im Rahmen des Kopiervorgangs ändert der Befehl den Elementnamen von Get-Widget.ps1 zu Get-Widget.ps1.txt" so dass er an E-Mail-Nachrichten angefügt werden kann.

Copy-Item "\\Server01\Share\Get-Widget.ps1" -Destination "\\Server12\ScriptArchive\Get-Widget.ps1.txt"

Beispiel 5: Kopieren einer Datei auf einen Remotecomputer

Eine Sitzung wird auf dem Remotecomputer namens Server01 mit den Anmeldeinformationen Contoso\User01 erstellt und speichert die Ergebnisse in der Variablen namens $Session.

Das Copy-Item Cmdlet kopiert test.log vom D:\Folder001 Ordner in den Ordner auf dem C:\Folder001_Copy Remotecomputer mithilfe der in der $Session Variablen gespeicherten Sitzungsinformationen. Die ursprüngliche Datei wird nicht gelöscht.

$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "D:\Folder001\test.log" -Destination "C:\Folder001_Copy\" -ToSession $Session

Beispiel 6: Kopieren eines Ordners auf einen Remotecomputer

Eine Sitzung wird auf dem Remotecomputer namens Server01 mit den Anmeldeinformationen Contoso\User01 erstellt und speichert die Ergebnisse in der Variablen namens $Session.

Das Copy-Item Cmdlet kopiert den D:\Folder002 Ordner auf dem Remotecomputer mithilfe der in der $Session Variablen gespeicherten Sitzungsinformationen in das C:\Folder002_Copy Verzeichnis. Alle Unterordner oder Dateien werden nicht kopiert, ohne den Recurse-Schalter zu verwenden. Der Vorgang erstellt den Folder002_Copy Ordner, wenn er noch nicht vorhanden ist.

$Session = New-PSSession -ComputerName "Server02" -Credential "Contoso\User01"
Copy-Item "D:\Folder002\" -Destination "C:\Folder002_Copy\" -ToSession $Session

Beispiel 7: Rekursiv kopieren Sie den gesamten Inhalt eines Ordners auf einen Remotecomputer

Eine Sitzung wird auf dem Remotecomputer namens Server01 mit den Anmeldeinformationen Contoso\User01 erstellt und speichert die Ergebnisse in der Variablen namens $Session.

Das Copy-Item Cmdlet kopiert den gesamten Inhalt aus dem D:\Folder003 Ordner in das C:\Folder003_Copy Verzeichnis auf dem Remotecomputer mithilfe der sitzungsinformationen, die in der $Session Variablen gespeichert sind. Die Unterordner werden mit ihren Dateibäumen intakt kopiert. Der Vorgang erstellt den Folder003_Copy Ordner, wenn er noch nicht vorhanden ist.

$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder003\" -Destination "C:\Folder003_Copy\" -ToSession $Session -Recurse

Beispiel 8: Kopieren einer Datei auf einen Remotecomputer, und benennen Sie dann die Datei um.

Eine Sitzung wird auf dem Remotecomputer namens Server01 mit den Anmeldeinformationen Contoso\User01 erstellt und speichert die Ergebnisse in der Variablen namens $Session.

Das Copy-Item Cmdlet kopiert scriptingexample.ps1 vom D:\Folder004 Ordner in den Ordner auf dem C:\Folder004_Copy Remotecomputer mithilfe der in der $Session Variablen gespeicherten Sitzungsinformationen. Im Rahmen des Kopiervorgangs ändert der Befehl den Elementnamen von scriptingexample.ps1 zu scriptingexample_copy.ps1" so dass er an E-Mail-Nachrichten angefügt werden kann. Die ursprüngliche Datei wird nicht gelöscht.

$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder004\scriptingexample.ps1" -Destination "C:\Folder004_Copy\scriptingexample_copy.ps1" -ToSession $Session

Beispiel 9: Kopieren einer Remotedatei auf den lokalen Computer

Eine Sitzung wird auf dem Remotecomputer namens Server01 mit den Anmeldeinformationen Contoso\User01 erstellt und speichert die Ergebnisse in der Variablen namens $Session.

Das Copy-Item Cmdlet kopiert test.log aus dem Remotebereich C:\MyRemoteData\ in den lokalen D:\MyLocalData Ordner mithilfe der in der $Session Variablen gespeicherten Sitzungsinformationen. Die ursprüngliche Datei wird nicht gelöscht.

$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\test.log" -Destination "D:\MyLocalData\" -FromSession $Session

Beispiel 10: Kopieren des gesamten Inhalts eines Remoteordners in den lokalen Computer

Eine Sitzung wird auf dem Remotecomputer namens Server01 mit den Anmeldeinformationen Contoso\User01 erstellt und speichert die Ergebnisse in der Variablen namens $Session.

Das Copy-Item Cmdlet kopiert den gesamten Inhalt aus dem Remoteordner C:\MyRemoteData\scripts in den lokalen D:\MyLocalData Ordner mithilfe der in der $Session Variablen gespeicherten Sitzungsinformationen. Wenn der Skriptordner Dateien in Unterordnern enthält, werden diese Unterordner mit ihren Dateibäumen intakt kopiert.

$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\" -FromSession $Session

Beispiel 11: Rekursiv kopieren Sie den gesamten Inhalt eines Remoteordners auf den lokalen Computer

Eine Sitzung wird auf dem Remotecomputer namens Server01 mit den Anmeldeinformationen Contoso\User01 erstellt und speichert die Ergebnisse in der Variablen namens $Session.

Das Copy-Item Cmdlet kopiert den gesamten Inhalt aus dem Remoteordner C:\MyRemoteData\scripts in den lokalen D:\MyLocalData\scripts Ordner mithilfe der in der $Session Variablen gespeicherten Sitzungsinformationen. Da der Recurse-Parameter verwendet wird, erstellt der Vorgang den Skriptordner, wenn er noch nicht vorhanden ist. Wenn der Skriptordner Dateien in Unterordnern enthält, werden diese Unterordner mit ihren Dateibäumen intakt kopiert.

$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\scripts" -FromSession $Session -Recurse

Beispiel 12: Rekursives Kopieren von Dateien aus einer Ordnerstruktur in den aktuellen Ordner

In diesem Beispiel wird gezeigt, wie Dateien aus einer Mehrebenenordnerstruktur in einen einzelnen flachen Ordner kopiert werden. Die ersten drei Befehle zeigen die vorhandene Ordnerstruktur und den Inhalt von zwei Dateien, beide Namen file3.txt.

PS C:\temp\test> (Get-ChildItem C:\temp\tree -Recurse).FullName
C:\temp\tree\subfolder
C:\temp\tree\file1.txt
C:\temp\tree\file2.txt
C:\temp\tree\file3.txt
C:\temp\tree\subfolder\file3.txt
C:\temp\tree\subfolder\file4.txt
C:\temp\tree\subfolder\file5.txt

PS C:\temp\test> Get-Content C:\temp\tree\file3.txt
This is file3.txt in the root folder

PS C:\temp\test> Get-Content C:\temp\tree\subfolder\file3.txt
This is file3.txt in the subfolder

PS C:\temp\test> Copy-Item -Path C:\temp\tree -Filter *.txt -Recurse -Container:$false
PS C:\temp\test> (Get-ChildItem . -Recurse).FullName
C:\temp\test\subfolder
C:\temp\test\file1.txt
C:\temp\test\file2.txt
C:\temp\test\file3.txt
C:\temp\test\file4.txt
C:\temp\test\file5.txt

PS C:\temp\test> Get-Content .\file3.txt
This is file3.txt in the subfolder

Das Copy-Item Cmdlet verfügt über den Parameter "Container " auf $false". Dadurch wird der Inhalt des Quellordners kopiert, die Ordnerstruktur jedoch nicht beibehalten. Beachten Sie, dass Dateien mit demselben Namen im Zielordner überschrieben werden.

Parameter

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Container

Gibt an, dass dieses Cmdlet Containerobjekte während des Kopiervorgangs beibehalten. Standardmäßig ist der Containerparameter auf "True" festgelegt.

Type:SwitchParameter
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Hinweis

Dieser Parameter wird von anbietern, die mit PowerShell installiert sind, nicht unterstützt. Um einen anderen Benutzer zu imitieren oder Ihre Anmeldeinformationen beim Ausführen dieses Cmdlets zu erhöhen, verwenden Sie "Invoke-Command".

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Destination

Gibt den Pfad zum neuen Speicherort an. Der Standardwert ist das aktuelle Verzeichnis.

Geben Sie zum Umbenennen des Elements, das kopiert wird, einen neuen Namen im Wert des Zielparameters an.

Type:String
Position:1
Default value:Current directory
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Exclude

Gibt als Zeichenfolgenarray ein Element oder Elemente an, die dieses Cmdlet im Vorgang ausschließen. Der Wert dieses Parameters qualifiziert den Path-Parameter. Geben Sie ein Pfadelement oder Muster ein, z. B *.txt. . Platzhalterzeichen sind zulässig. Der Parameter "Exclude " ist nur wirksam, wenn der Befehl den Inhalt eines Elements enthält, z C:\Windows\*. B. , wobei das Wildcardzeichen den Inhalt des C:\Windows Verzeichnisses angibt.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Gibt einen Filter an, der den Path-Parameter qualifizieren soll. Der FileSystem-Anbieter ist der einzige installierte PowerShell-Anbieter, der die Verwendung von Filtern unterstützt. Sie finden die Syntax für die Dateisystemfiltersprache in about_Wildcards. Filter sind effizienter als andere Parameter, da der Anbieter sie anwendet, wenn das Cmdlet die Objekte abruft, anstatt PowerShell nach dem Abrufen der Objekte zu filtern.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Force

Gibt an, dass dieses Cmdlet Elemente kopiert, die sonst nicht geändert werden können, z. B. das Kopieren über eine schreibgeschützte Datei oder einen Alias.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FromSession

Gibt das PSSession-Objekt an, aus dem eine Remotedatei kopiert wird. Wenn Sie diesen Parameter verwenden, verweisen die Parameter Path und LiteralPath auf den lokalen Pfad auf dem Remotecomputer.

Type:PSSession
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

Gibt als Zeichenfolgenarray ein Element oder elemente an, das dieses Cmdlet in den Vorgang einschließt. Der Wert dieses Parameters qualifiziert den Path-Parameter. Geben Sie ein Pfadelement oder -muster ein, z "*.txt". B. . Platzhalterzeichen sind zulässig. Der Include-Parameter ist nur wirksam, wenn der Befehl den Inhalt eines Elements enthält, z C:\Windows\*. B. , wobei das Wildcardzeichen den Inhalt des C:\Windows Verzeichnisses angibt.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

Gibt einen Pfad zu einem oder mehreren Speicherorten an. Der Wert von LiteralPath wird genau wie eingegeben verwendet. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einzelne Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.

Weitere Informationen finden Sie unter about_Quoting_Rules.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PassThru

Gibt ein Objekt zurück, das das Element darstellt, mit dem Sie arbeiten. Standardmäßig generiert dieses Cmdlet keine Ausgabe.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Gibt den Pfad zu den zu kopierenden Elementen als Zeichenfolgenarray an. Platzhalterzeichen sind zulässig.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Recurse

Gibt an, dass dieses Cmdlet eine rekursive Kopie ausführt.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ToSession

Gibt das PSSession-Objekt an, in das eine Remotedatei kopiert wird. Wenn Sie diesen Parameter verwenden, bezieht sich der Destination-Parameter auf den lokalen Pfad auf dem Remotecomputer.

Type:PSSession
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

String

Sie können eine Zeichenfolge weiterleiten, die einen Pfad zu diesem Cmdlet enthält.

Ausgaben

None or an object representing the copied item

Wenn Sie den PassThru-Parameter verwenden, gibt dieses Cmdlet ein Objekt zurück, das das kopierte Element darstellt. Andernfalls generiert dieses Cmdlet keine Ausgabe.

Hinweise

Dieses Cmdlet ist so konzipiert, dass die Von jedem Anbieter verfügbar gemachten Daten verwendet werden. Geben Sie Get-PSProviderzum Auflisten der in Ihrer Sitzung verfügbaren Anbieter ein. Weitere Informationen finden Sie unter about_Providers.