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
コマンドレットは、ある場所から同じ名前空間内の別の場所に項目をコピーします。
たとえば、ファイルをフォルダーにコピーすることはできますが、証明書ドライブにファイルをコピーすることはできません。
このコマンドレットは、コピーする項目を切り取ったり削除したりしません。 コマンドレットがコピーできる特定の項目は、アイテムを公開する PowerShell プロバイダーによって異なります。 たとえば、ファイル システム ドライブ内のファイルとディレクトリ、レジストリ ドライブ内のレジストリ キーとエントリをコピーできます。
このコマンドレットは、同じコマンドで項目のコピーと名前の変更を行うことができます。 項目の名前を変更するには、 Destination パラメーターの値に新しい名前を入力します。 アイテムの名前を変更し、コピーしない場合は、 Rename-Item
コマンドレットを使用します。
例
例 1: 指定したディレクトリにファイルをコピーする
次の使用例は、 mar1604.log.txt
ファイルを C:\Presentation
ディレクトリにコピーします。 元のファイルは削除されません。
Copy-Item "C:\Wabash\Logfiles\mar1604.log.txt" -Destination "C:\Presentation"
例 2: 既存のディレクトリにディレクトリの内容をコピーする
次の使用例は、 C:\Logfiles
ディレクトリの内容を既存の C:\Drawings
ディレクトリにコピーします。
Logfiles
ディレクトリはコピーされません。
Logfiles
ディレクトリのサブディレクトリにファイルが含まれている場合、それらのサブディレクトリはファイルツリーをそのままにしてコピーされます。 既定では、 Container パラメーターは True に設定され、ディレクトリ構造が保持されます。
Copy-Item -Path "C:\Logfiles\*" -Destination "C:\Drawings" -Recurse
注
コピーに Logfiles
ディレクトリを含める必要がある場合は、パスから\*
を削除します。
例えば次が挙げられます。
Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings" -Recurse
例 3: ディレクトリの内容を新しいディレクトリにコピーする
次の使用例は、 C:\Logfiles
ソース ディレクトリの内容をコピーし、新しいコピー先ディレクトリを作成します。
\Logs
新しい宛先ディレクトリがC:\Drawings
に作成されます。
ソース ディレクトリの名前を含めるには、 Example 2 に示すように、既存のコピー先ディレクトリにコピーします。 または、新しい宛先ディレクトリにソース ディレクトリと同じ名前を付けます。
Copy-Item -Path "C:\Logfiles" -Destination "C:\Drawings\Logs" -Recurse
注
[パス] に \*
が含まれている場合、サブディレクトリのツリーを除くすべてのディレクトリのファイル内容が新しい宛先ディレクトリにコピーされます。 例えば次が挙げられます。
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: リモート コンピューターにファイルをコピーする
の資格情報を使用して Contoso\User01
という名前のリモート コンピューターにセッションが作成され、結果が $Session
という名前の変数に格納されます。
Copy-Item
コマンドレットは、test.log
変数に格納されているセッション情報を使用して、D:\Folder001
フォルダーからリモート コンピューター上のC:\Folder001_Copy
フォルダーに$Session
をコピーします。 元のファイルは削除されません。
$Session = New-PSSession -ComputerName "Server01" -Credential "Contoso\User01"
Copy-Item "D:\Folder001\test.log" -Destination "C:\Folder001_Copy\" -ToSession $Session
例 6: フォルダーの内容全体をリモート コンピューターにコピーする
の資格情報を使用して Contoso\User01
という名前のリモート コンピューターにセッションが作成され、結果が $Session
という名前の変数に格納されます。
Copy-Item
コマンドレットは、D:\Folder002
変数に格納されているセッション情報を使用して、C:\Folder002_Copy
フォルダーからリモート コンピューター上の$Session
ディレクトリにコンテンツ全体をコピーします。 サブフォルダーは、ファイル ツリーはそのままコピーされます。
$Session = New-PSSession -ComputerName "Server02" -Credential "Contoso\User01"
Copy-Item "D:\Folder002\" -Destination "C:\Folder002_Copy\" -ToSession $Session
例 7: フォルダーの内容全体をリモート コンピューターに再帰的にコピーする
の資格情報を使用して Contoso\User01
という名前のリモート コンピューターにセッションが作成され、結果が $Session
という名前の変数に格納されます。
Copy-Item
コマンドレットは、D:\Folder003
変数に格納されているセッション情報を使用して、C:\Folder003_Copy
フォルダーからリモート コンピューター上の$Session
ディレクトリにコンテンツ全体をコピーします。 サブフォルダーは、ファイル ツリーはそのままコピーされます。
Recurse パラメーターが使用されるため、操作によって Folder003_Copy
フォルダーが作成されます (まだ存在しない場合)。
$Session = New-PSSession -ComputerName "Server04" -Credential "Contoso\User01"
Copy-Item "D:\Folder003\" -Destination "C:\Folder003_Copy\" -ToSession $Session -Recurse
例 8: リモート コンピューターにファイルをコピーし、ファイルの名前を変更する
の資格情報を使用して Contoso\User01
という名前のリモート コンピューターにセッションが作成され、結果が $Session
という名前の変数に格納されます。
Copy-Item
コマンドレットは、scriptingexample.ps1
変数に格納されているセッション情報を使用して、D:\Folder004
フォルダーからリモート コンピューター上のC:\Folder004_Copy
フォルダーに$Session
をコピーします。 コピー操作の一部として、このコマンドはアイテム名を scriptingexample.ps1
から scriptingexample_copy.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: リモート ファイルをローカル コンピューターにコピーする
の資格情報を使用して 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: リモート フォルダーの内容全体をローカル コンピューターにコピーする
の資格情報を使用して 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: リモート フォルダーの内容全体をローカル コンピューターに再帰的にコピーする
の資格情報を使用して 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
パラメーター
-Confirm
コマンドレットを実行する前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Container
このコマンドレットがコピー操作中にコンテナー オブジェクトを保持することを示します。 既定では、 Container パラメーターは True に設定されます。
型: | SwitchParameter |
配置: | Named |
規定値: | True |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Credential
注
このパラメーターは、PowerShell でインストールされているプロバイダーではサポートされていません。 別のユーザーを偽装したり、このコマンドレットの実行時に資格情報を昇格したりするには、Invoke-Commandを使用します。
型: | PSCredential |
配置: | Named |
規定値: | Current user |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Destination
新しい場所へのパスを指定します。 既定値は、現在のディレクトリです。
コピーする項目の名前を変更するには、 Destination パラメーターの値に新しい名前を指定します。
型: | String |
配置: | 1 |
規定値: | Current directory |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Exclude
文字列配列として、このコマンドレットが操作で除外する項目を指定します。 このパラメーターの値は、Path パラメーターを修飾します。 パス要素またはパターン (*.txt
など) を入力します。 ワイルドカード文字を使用できます。
Exclude パラメーターは、コマンドに項目の内容 (C:\Windows\*
など) が含まれている場合にのみ有効です。ワイルドカード文字は、C:\Windows
ディレクトリの内容を指定します。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-Filter
Path パラメーターを修飾するフィルターを指定します。 FileSystem プロバイダーは、フィルターの使用をサポートする唯一のインストール済み PowerShell プロバイダーです。 FileSystem フィルター言語の構文は about_Wildcardsに記載されています。 フィルターは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、コマンドレットがオブジェクトを取得するときにプロバイダーによって適用されるため、他のパラメーターよりも効率的です。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-Force
このコマンドレットは、読み取り専用ファイルまたはエイリアスをコピーするなど、変更できない項目をコピーすることを示します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-FromSession
リモート ファイルのコピー元となる PSSession オブジェクトを指定します。 このパラメーターを使用する場合、 Path パラメーターと LiteralPath パラメーターは、リモート コンピューター上のローカル パスを参照します。
型: | PSSession |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Include
文字列配列として、このコマンドレットが操作に含める項目を指定します。 このパラメーターの値は、Path パラメーターを修飾します。 パス要素またはパターン ("*.txt"
など) を入力します。 ワイルドカード文字を使用できます。
Include パラメーターは、コマンドに項目の内容 (ワイルドカード文字が C:\Windows\*
ディレクトリの内容を指定する C:\Windows
など) が含まれている場合にのみ有効です。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-LiteralPath
1 つ以上の場所へのパスを指定します。 LiteralPath の値は、入力されたとおりにそのまま使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。
詳細については、about_Quoting_Rulesを参照してください。
型: | String[] |
Aliases: | PSPath |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-PassThru
作業中のアイテムを表すオブジェクトを返します。 既定では、このコマンドレットは出力を生成しません。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Path
文字列配列として、コピーする項目へのパスを指定します。 ワイルドカード文字を使用できます。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-Recurse
このコマンドレットが再帰的コピーを実行することを示します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ToSession
リモート・ファイルのコピー先となる PSSession オブジェクトを指定します。 このパラメーターを使用すると、 Destination パラメーターはリモート コンピューター上のローカル パスを参照します。
型: | PSSession |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-UseTransaction
アクティブなトランザクションにコマンドを含みます。 このパラメーターは、トランザクションが進行中の場合にのみ有効です。 詳細については、about_Transactionsを参照してください。
型: | SwitchParameter |
Aliases: | usetx |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
このコマンドレットへのパスを含む文字列をパイプ処理できます。
出力
None or an object representing the copied item
PassThru パラメーターを使用すると、このコマンドレットはコピーされた項目を表すオブジェクトを返します。 それ以外の場合、このコマンドレットは出力を生成しません。
メモ
このコマンドレットは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用可能なプロバイダーを一覧表示するには、「Get-PSProvider
」と入力します。 詳細については、about_Providersを参照してください。