共用方式為


Copy-Item

將項目從某個位置複製到另一個位置。

語法

Path (預設值)

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>]

LiteralPath

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

Description

Copy-Item Cmdlet 會將專案從一個位置複製到相同命名空間中的另一個位置。 例如,它可以將檔案複製到資料夾,但無法將檔案複製到憑證磁碟驅動器。

此 Cmdlet 不會剪下或刪除正在複製的專案。 Cmdlet 可以複製的特定專案取決於公開專案的 PowerShell 提供者。 例如,它可以複製檔系統磁碟驅動器中的檔案和目錄,以及登錄磁碟驅動器中的登錄機碼和專案。

此 Cmdlet 可以在相同的命令中複製和重新命名專案。 若要重新命名專案,請在 Destination 參數的值中輸入新名稱。 若要重新命名專案,而不複製該專案,請使用 Rename-Item Cmdlet。

範例

範例 1:將檔案複製到指定的目錄

本範例會將 mar1604.log.txt 檔案複製到 C:\Presentation 目錄。 不會刪除源檔。

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

範例 2:將目錄內容複製到現有的目錄

本範例會將 C:\Logfiles 目錄的內容複製到現有的 C:\Drawings 目錄中。 不會複製 Logfiles 目錄。

如果 Logfiles 目錄包含子目錄中的檔案,這些子目錄會以其檔案樹狀結構完整複製。 根據預設,容器 參數會設定為 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中建立。

若要包含來源目錄的名稱,請複製到現有的目的地目錄,如範例 2 所示。 或者,將新的目的地目錄命名為與來源目錄相同的目錄。

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

備註

如果 Path 包含 \*,則所有目錄的檔案內容,不含子目錄樹狀結構,都會複製到新的目的地目錄。 例如:

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

範例 4:將檔案複製到指定的目錄,並重新命名檔案

此範例會使用 Copy-Item Cmdlet,將 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 Cmdlet 會使用儲存在 test.log 變數中的工作階段資訊,將 D:\Folder001C:\Folder001_Copy 資料夾複製到遠端電腦上的 $Session 資料夾。 不會刪除源檔。

$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 Cmdlet 會使用儲存在 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:以遞歸方式將資料夾的整個內容複製到遠端電腦

會話會建立至名為 Server01 且具有 Contoso\User01 認證的遠端電腦,並將結果儲存在名為 $Session的變數中。

Copy-Item Cmdlet 會使用儲存在 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:將檔案複製到遠端電腦,然後重新命名檔案

會話會建立至名為 Server01 且具有 Contoso\User01 認證的遠端電腦,並將結果儲存在名為 $Session的變數中。

Copy-Item Cmdlet 會使用儲存在 scriptingexample.ps1 變數中的工作階段資訊,將 D:\Folder004C:\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:將遠端檔案複製到本機電腦

會話會建立至名為 Server01 且具有 Contoso\User01 認證的遠端電腦,並將結果儲存在名為 $Session的變數中。

Copy-Item Cmdlet 會使用儲存在 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 Cmdlet 會使用儲存在 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 Cmdlet 會使用儲存在 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

在執行 Cmdlet 之前,提示您進行確認。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:cf

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Container

表示此 Cmdlet 會在複製作業期間保留容器物件。 根據預設,容器 參數會設定為 true

參數屬性

類型:SwitchParameter
預設值:True
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Credential

備註

任何與 PowerShell 一起安裝的提供者都不支援此參數。 若要模擬其他使用者,或在執行此 Cmdlet 時提升您的認證,請使用 Invoke-Command

參數屬性

類型:PSCredential
預設值:Current user
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Destination

指定新位置的路徑。 預設值是目前的目錄。

若要重新命名複製的專案,請在 destination 參數的值中指定新的名稱。

參數屬性

類型:String
預設值:Current directory
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:1
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Exclude

指定要在此 Cmdlet 作業中排除的項目或多項,並以字串陣列形式表示。 此參數的值對 路徑 參數進行限定。 輸入路徑元素或模式,例如 *.txt。 允許使用通配符字元。 只有在命令包含項目的內容,例如 時,C:\Windows\* 參數才有效,其中通配符會指定 C:\Windows 目錄的內容。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Filter

指定篩選條件,以限定 Path 參數。 FileSystem 提供者是唯一已安裝且支援使用篩選的 PowerShell 提供者。 您可以在 about_Wildcards中找到 FileSystem 篩選語言的語法。 篩選比其他參數更有效率,因為提供者會在 Cmdlet 取得物件時套用它們,而不是在擷取對象之後讓 PowerShell 篩選物件。

參數屬性

類型:String
預設值:None
支援萬用字元:True
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Force

表示此 Cmdlet 會複製無法變更的專案,例如透過只讀檔案或別名複製。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-FromSession

指定要從中複製遠端檔案的 PSSession 物件。 當您使用此參數時,PathLiteralPath 參數會參考遠端電腦上的本機路徑。

參數屬性

類型:PSSession
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Include

指定此 Cmdlet 在操作中包含的一個或多個專案,這些專案是以字串陣列的形式表示。 此參數的值對 路徑 參數進行限定。 輸入路徑元素或模式,例如 "*.txt"。 允許使用通配符字元。 只有當命令包含項目的內容,例如 時,C:\Windows\* 參數才有效,其中通配符會指定 C:\Windows 目錄的內容。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-LiteralPath

指定通往一個或多個位置的路徑。 LiteralPath 的值會被原樣使用,不做任何更改。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。

如需詳細資訊,請參閱 about_Quoting_Rules

參數屬性

類型:

String[]

預設值:None
支援萬用字元:False
不要顯示:False
別名:PSPath

參數集

LiteralPath
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-PassThru

傳回 物件,表示您正在使用的專案。 根據預設,此 Cmdlet 不會產生任何輸出。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Path

指定要複製之項目的路徑,做為字串陣列。 允許使用通配符字元。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

Path
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Recurse

表示此 Cmdlet 會執行遞歸複製。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ToSession

指定要複製遠端檔案的目標 PSSession 物件。 當您使用此參數時,Destination 參數會參考遠端電腦上的本機路徑。

參數屬性

類型:PSSession
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-UseTransaction

在作用中交易中包含 命令。 只有在交易進行中時,此參數才有效。 如需詳細資訊,請參閱 about_Transactions

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:usetx

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-WhatIf

顯示 Cmdlet 執行時會發生什麼事。 該 Cmdlet 未被執行。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:無線

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters

輸入

String

您可以傳送包含路徑的字串到此 Cmdlet。

輸出

None or an object representing the copied item

當您使用 PassThru 參數時,這個 Cmdlet 會傳回代表複製項目的物件。 否則,此 Cmdlet 不會產生任何輸出。

備註

此 Cmdlet 的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入 Get-PSProvider。 如需詳細資訊,請參閱 about_Providers