Copy-Item
項目をある場所から別の場所にコピーします。
構文
Copy-Item
[-Path] <String[]>
[[-Destination] <String>]
[-Container]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-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]
[-UseTransaction]
[-FromSession <PSSession>]
[-ToSession <PSSession>]
[<CommonParameters>]
Copy-Item
[-Path] <String[]>
[[-Destination] <String>]
[-Container]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Copy-Item
-LiteralPath <String[]>
[[-Destination] <String>]
[-Container]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
説明
コマンドレットは Copy-Item
、ある場所から同じ名前空間内の別の場所に項目をコピーします。
たとえば、ファイルをフォルダーにコピーすることはできますが、証明書ドライブにファイルをコピーすることはできません。
このコマンドレットは、コピーする項目を切り取ったり削除したりしません。 コマンドレットがコピーできる特定の項目は、アイテムを公開する PowerShell プロバイダーによって異なります。 たとえば、ファイル システム ドライブ内のファイルとディレクトリ、レジストリ ドライブ内のレジストリ キーとエントリをコピーできます。
このコマンドレットは、同じコマンドで項目のコピーと名前の変更を行うことができます。 項目の名前を変更するには、Destination パラメーターの値に新しい名前を入力します。 アイテムの名前を変更し、コピーしない場合は、コマンドレットを Rename-Item
使用します。
例
例 1: 指定したディレクトリにファイルをコピーする
次の使用例は、ファイルを mar1604.log.txt
ディレクトリに C:\Presentation
コピーします。 元のファイルは削除されません。
Copy-Item "C:\Wabash\Logfiles\mar1604.log.txt" -Destination "C:\Presentation"
例 2: 既存のディレクトリにディレクトリの内容をコピーする
次の使用例は、ディレクトリの内容を既存C:\Drawings
のC:\Logfiles
ディレクトリにコピーします。 ディレクトリは Logfiles
コピーされません。
ディレクトリの Logfiles
サブディレクトリにファイルがある場合、それらのサブディレクトリはファイル ツリーはそのままコピーされます。 既定では、Container パラメーターは True に設定され、ディレクトリ構造が保持されます。
Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings" -Recurse
Note
パス C:\Drawings
が存在しない場合、コマンドレットはフォルダーからすべてのファイルを Logfiles
1 つのファイル C:\Drawings
にコピーします。
例 3: ディレクトリと内容を新しいディレクトリにコピーする
次の使用例は、ソース ディレクトリの内容を C:\Logfiles
コピーし、新しいコピー先ディレクトリを作成します。 新しい宛先ディレクトリ \Logs
が作成 C:\Drawings
されます。
ソース ディレクトリの名前を含めるには、例 2 に示すように既存の宛先ディレクトリにコピーします。 または、新しい宛先ディレクトリにソース ディレクトリと同じ名前を付けます。
Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings\Logs" -Recurse
Note
パスに含まれる\*
場合、サブディレクトリ ツリーを含むすべてのディレクトリのファイルコンテンツが新しいコピー先ディレクトリにコピーされます。 次に例を示します。
Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings\Logs" -Recurse
例 4: 指定したディレクトリにファイルをコピーし、ファイルの名前を変更する
この例では、コマンドレットを Copy-Item
使用して、 Get-Widget.ps1
ディレクトリから \\Server01\Share
ディレクトリにスクリプトを \\Server12\ScriptArchive
コピーします。 コピー操作の一環として、このコマンドはアイテム名 Get-Widget.ps1
を変更して Get-Widget.ps1.txt
、メール メッセージに安全に添付できるようにします。
Copy-Item "\\Server01\Share\Get-Widget.ps1" -Destination "\\Server12\ScriptArchive\Get-Widget.ps1.txt"
例 5: リモート コンピューターにファイルをコピーする
Server01 という名前のリモート コンピューターに対して資格情報Contoso\User01
を使用してセッションが作成され、結果が名前付き$Session
変数に格納されます。
コマンドレットはCopy-Item
、変数にD:\Folder001
格納されているセッション情報をC:\Folder001_Copy
使用して、フォルダーからリモート コンピューター上のフォルダーに$Session
コピーtest.log
します。 元のファイルは削除されません。
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "D:\Folder001\test.log" -Destination "C:\Folder001_Copy\" -ToSession $Session
例 6: リモート コンピューターにフォルダーをコピーする
Server01 という名前のリモート コンピューターに対して資格情報Contoso\User01
を使用してセッションが作成され、結果が名前付き$Session
変数に格納されます。
コマンドレットは Copy-Item
、変数に D:\Folder002
格納されているセッション情報を C:\Folder002_Copy
使用して、リモート コンピューター上のディレクトリにフォルダーを $Session
コピーします。 サブフォルダーまたはファイルは、Recurse スイッチを使用しないとコピーされません。 この操作では、 Folder002_Copy
フォルダーがまだ存在しない場合は作成されます。
$Session = New-PSSession -ComputerName "Server02" -Credential "Contoso\User01"
Copy-Item "D:\Folder002\" -Destination "C:\Folder002_Copy\" -ToSession $Session
例 7: フォルダーの内容全体をリモート コンピューターに再帰的にコピーする
Server01 という名前のリモート コンピューターに対して資格情報Contoso\User01
を使用してセッションが作成され、結果が名前付き$Session
変数に格納されます。
コマンドレットはCopy-Item
、変数に格納されているセッション情報をD:\Folder003
使用して、フォルダーの内容全体をリモート コンピューター上のディレクトリに$Session
コピーしますC:\Folder003_Copy
。 サブフォルダーは、ファイル ツリーはそのままコピーされます。 この操作では、 Folder003_Copy
フォルダーがまだ存在しない場合は作成されます。
$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder003\" -Destination "C:\Folder003_Copy\" -ToSession $Session -Recurse
例 8: リモート コンピューターにファイルをコピーし、ファイルの名前を変更する
Server01 という名前のリモート コンピューターに対して資格情報Contoso\User01
を使用してセッションが作成され、結果が名前付き$Session
変数に格納されます。
コマンドレットはCopy-Item
、変数にD:\Folder004
格納されているセッション情報をC:\Folder004_Copy
使用して、フォルダーからリモート コンピューター上のフォルダーに$Session
コピーscriptingexample.ps1
します。 元のファイルは削除されません。
$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder004\scriptingexample.ps1" -Destination "C:\Folder004_Copy\scriptingexample_copy.ps1" -ToSession $Session
例 9: リモート ファイルをローカル コンピューターにコピーする
Server01 という名前のリモート コンピューターに対して資格情報Contoso\User01
を使用してセッションが作成され、結果が名前付き$Session
変数に格納されます。
コマンドレットは Copy-Item
、 test.log
変数に格納されているセッション情報を使用して、リモート C:\MyRemoteData\
からローカル D:\MyLocalData
フォルダーに $Session
コピーします。 元のファイルは削除されません。
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\test.log" -Destination "D:\MyLocalData\" -FromSession $Session
例 10: リモート フォルダーの内容全体をローカル コンピューターにコピーする
Server01 という名前のリモート コンピューターに対して資格情報Contoso\User01
を使用してセッションが作成され、結果が名前付き$Session
変数に格納されます。
コマンドレットは Copy-Item
、変数に格納されているセッション情報を使用して、リモート C:\MyRemoteData\scripts
フォルダーからローカル D:\MyLocalData
フォルダーに内容全体を $Session
コピーします。 scripts フォルダーにサブフォルダー内のファイルがある場合、それらのサブフォルダーはファイル ツリーはそのままコピーされます。
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\" -FromSession $Session
例 11: リモート フォルダーの内容全体をローカル コンピューターに再帰的にコピーする
Server01 という名前のリモート コンピューターに対して資格情報Contoso\User01
を使用してセッションが作成され、結果が名前付き$Session
変数に格納されます。
コマンドレットは Copy-Item
、変数に格納されているセッション情報を使用して、リモート C:\MyRemoteData\scripts
フォルダーからローカル D:\MyLocalData\scripts
フォルダーに内容全体を $Session
コピーします。 Recurse パラメーターが使用されるため、スクリプト フォルダーがまだ存在しない場合は作成されます。 scripts フォルダーにサブフォルダー内のファイルがある場合、それらのサブフォルダーはファイル ツリーはそのままコピーされます。
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "C:\MyRemoteData\scripts" -Destination "D:\MyLocalData\scripts" -FromSession $Session -Recurse
例 12: フォルダー ツリーから現在のフォルダーにファイルを再帰的にコピーする
この例では、複数レベルのフォルダー構造から 1 つのフラット フォルダーにファイルをコピーする方法を示します。
最初の 3 つのコマンドは、既存のフォルダー構造と 2 つのファイルの内容 (両方の名前) を示しています 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
このCopy-Item
コマンドレットには、Container パラメーターが設定されています$false
。 これにより、ソース フォルダーの内容がコピーされますが、フォルダー構造は保持されません。 同じ名前のファイルがコピー先フォルダーに上書きされていることに注意してください。
例 13: フィルターを使用して再帰なしでアイテムをコピーする
この例では、Include パラメーターを使用してコピーする項目を選択した結果を示します。
この例では、コピーするファイルを含む次のフォルダー構造を使用します。
D:\temp\tree\example.ps1
D:\temp\tree\example.txt
D:\temp\tree\examples\
D:\temp\tree\examples\example_1.txt
D:\temp\tree\examples\example_2.txt
D:\temp\tree\examples\subfolder\
D:\temp\tree\examples\subfolder\test.txt
この例では、 Copy-Item
Path パラメーターと Include パラメーターの両方に対して、ワイルドカードを使用して呼び出されます。 Path パラメーターにワイルドカードを指定すると、一致D:\temp\tree\*
するすべてのファイルとフォルダーが確実に処理されます。 Include パラメーターは、処理する項目の一覧をフィルター処理し、操作を開始ex
するパスのみに制限します。
PS D:\temp\test\out> Copy-Item -Path D:\temp\tree\* -Include ex*
PS D:\temp\test\out> (Get-ChildItem -Recurse).FullName
D:\temp\out\examples
D:\temp\out\example.ps1
D:\temp\out\example.txt
Include パラメーターは、一致ex*
するすべてのアイテムをコピーするフォルダーのD:\temp\tree
内容に適用されます。 再帰を行わないと、 D:\temp\out\examples
フォルダーはコピーされますが、その内容はコピーされません。
例 14: フィルターを使用して再帰のある項目をコピーする
この例では、Include パラメーターを使用してコピーする項目を選択した結果を示します。
この例では、コピーするファイルを含む次のフォルダー構造を使用します。
D:\temp\tree\example.ps1
D:\temp\tree\example.txt
D:\temp\tree\examples\
D:\temp\tree\examples\example_1.txt
D:\temp\tree\examples\example_2.txt
D:\temp\tree\examples\subfolder\
D:\temp\tree\examples\subfolder\test.txt
この例では、 Copy-Item
Path パラメーターと Include パラメーターの両方に対して、ワイルドカードを使用して呼び出されます。 Path パラメーターにワイルドカードを指定すると、一致D:\temp\tree\*
するすべてのファイルとフォルダーが確実に処理されます。 Include パラメーターは、処理する項目の一覧をフィルター処理し、操作を開始ex
するパスのみに制限します。
D:\temp\out> Copy-Item -Path D:\temp\tree\* -Include ex* -Recurse
D:\temp\out> (Get-ChildItem -Recurse).FullName
D:\temp\out\examples
D:\temp\out\example.ps1
D:\temp\out\example.txt
D:\temp\out\examples\subfolder
D:\temp\out\examples\example_1.txt
D:\temp\out\examples\example_2.txt
D:\temp\out\examples\subfolder\test.txt
Include パラメーターは、一致ex*
するすべてのアイテムをコピーするフォルダーのD:\temp\tree
内容に適用されます。 再帰では、 D:\temp\out\examples
フォルダーがすべてのファイルとサブフォルダーと共にコピーされます。 コピーには、インクルード フィルターと 一致しない ファイルが含まれます。 使用Copy-Item
する場合、フィルターは Path パラメーターで指定された最上位レベルにのみ適用されます。 その後、一致する項目に再帰が適用されます。
Note
Exclude パラメーターの動作は、この例で説明した動作と同じですが、パターンに一致しないパスのみに操作が制限される点が異なります。
例 15: 指定された野生のパスから再帰的にコピーするようにファイルカード制限する
この例では、野生の一致するパスから別のフォルダーに再帰的にコピーされるファイルカード制限する方法を示します。 例 13 は、Include パラメーターは、野生のパスカード指定パスに対して解決されたパスのみをフィルター処理するため、Include パラメーターを使用して、フォルダーから再帰的にコピーされるファイルを制限できないことを示しています。 代わりに、 Get-ChildItem
コピーする項目を検索し、それらの項目 Copy-Item
を .
この例では、コピーするファイルを含む次のフォルダー構造を使用します。
D:\temp\tree\example.ps1
D:\temp\tree\example.txt
D:\temp\tree\examples\
D:\temp\tree\examples\example_1.txt
D:\temp\tree\examples\example_2.txt
D:\temp\tree\examples\subfolder\
D:\temp\tree\examples\subfolder\test.txt
で始まるex*
すべての項目をコピーするには、Recurse パラメーターと Filter パラメーターを使用Get-ChildItem
し、結果のパイプ先をCopy-Item
指定します。
D:\temp\out> Get-ChildItem -Path D:\temp\tree -Recurse -Filter ex* | Copy-Item
D:\temp\out> (Get-ChildItem -Recurse).FullName
D:\temp\out\examples
D:\temp\out\example_1.txt
D:\temp\out\example_2.txt
D:\temp\out\example.ps1
D:\temp\out\example.txt
Filter パラメーターGet-ChildItem
はCopy-Item
、再帰中に検出された項目に適用されます。 これにより、項目を再帰的に検索、フィルター処理、コピーできます。
パラメーター
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Container
このコマンドレットがコピー操作中にコンテナー オブジェクトを保持することを示します。 既定では、 Container パラメーターは True に 設定されています。
Type: | SwitchParameter |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Note
このパラメーターは、PowerShell でインストールされているプロバイダーではサポートされていません。 別のユーザーを偽装したり、このコマンドレットの実行時に資格情報を昇格したりするには、Invoke-Command を使用 します。
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Destination
新しい場所のパスを指定します。 既定値は、現在のディレクトリです。
コピーする項目の名前を変更するには、Destination パラメーターの値に新しい名前を指定します。
Type: | String |
Position: | 1 |
Default value: | Current directory |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
このコマンドレットの操作を制限するために、1 つ以上のパス要素またはパターン (例 "*.txt"
: ) を指定します。 このパラメーターの値は、最終的な結果ではなく、Path パラメーターの野生カード一致する結果に対してフィルター処理されます。 このパラメーターは、Path が 1 つ以上のワイルドカードで指定されている場合にのみ有効です。 このパラメーターは Path パラメーターで解決されたパスのみをフィルター処理するため、Recurse パラメーターを使用して子フォルダーを繰り返すときに検出された項目はフィルター処理されません。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Path パラメーターを修飾するフィルターを指定します。 FileSystem プロバイダーは、フィルターの使用をサポートする唯一のインストール済み PowerShell プロバイダーです。 FileSystem フィルター言語の構文は、about_Wildカードで確認できます。 フィルターは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、コマンドレットがオブジェクトを取得するときにプロバイダーによって適用されるため、他のパラメーターよりも効率的です。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
このコマンドレットは、読み取り専用ファイルまたはエイリアスをコピーするなど、変更できない項目をコピーすることを示します。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FromSession
これは、FileSystem プロバイダーによって使用できる動的パラメーターです。
リモート・ファイルの コピー元の PSSession オブジェクトを指定します。 このパラメーターを使用すると、Path パラメーターと LiteralPath パラメーターはリモート コンピューター上のローカル パスを参照します。
詳細については、「about_FileSystem_Provider」を参照してください。
Type: | PSSession |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Include
このコマンドレットの操作を制限するために、1 つ以上のパス要素またはパターン (例 "*.txt"
: ) を指定します。 このパラメーターの値は、最終的な結果ではなく、Path パラメーターの野生カード一致する結果に対してフィルター処理されます。 このパラメーターは、Path が 1 つ以上のワイルドカードで指定されている場合にのみ有効です。 このパラメーターは Path パラメーターで解決されたパスのみをフィルター処理するため、Recurse パラメーターを使用して子フォルダーを繰り返すときに検出された項目はフィルター処理されません。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-LiteralPath
1 つ以上の場所へのパスを指定します。 LiteralPath の値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。
詳細については、「about_Quoting_Rules」を参照してください。
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-PassThru
作業中のアイテムを表すオブジェクトを返します。 既定では、このコマンドレットは出力を生成しません。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
文字列配列として、コピーする項目へのパスを指定します。 ワイルドカード文字を使用できます。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Recurse
このコマンドレットが再帰的コピーを実行することを示します。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ToSession
これは、FileSystem プロバイダーによって使用できる動的パラメーターです。
リモート・ファイルの コピー先の PSSession オブジェクトを指定します。 このパラメーターを使用すると、 Destination パラメーターはリモート コンピューター上のローカル パスを参照します。
詳細については、「about_FileSystem_Provider」を参照してください。
Type: | PSSession |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseTransaction
アクティブなトランザクションのコマンドが含まれます。 このパラメーターは、トランザクションが進行中の場合のみ有効です。 詳細については、「about_Transactions」を参照してください。
Type: | SwitchParameter |
Aliases: | usetx |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
コマンドレットの実行時に発生する内容を示します。 コマンドレットは実行されません。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
このコマンドレットへのパスを含む文字列をパイプ処理できます。
出力
None
既定では、このコマンドレットは出力を返しません。
PassThru パラメーターを使用すると、このコマンドレットはコピーされた項目を表すオブジェクトを返します。
メモ
Windows PowerShell には、次のエイリアスが Copy-Item
含まれています。
copy
cp
cpi
このコマンドレットは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用可能なプロバイダーを一覧表示するには、「.」と入力します Get-PSProvider
。 詳細については、「about_Providers」を参照してください。
関連リンク
PowerShell
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示