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-Item
Get-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
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-PSProvider
zum Auflisten der in Ihrer Sitzung verfügbaren Anbieter ein. Weitere Informationen finden Sie unter about_Providers.