Move-Item
將某個位置的項目移動到另一個位置。
語法
Move-Item [-LiteralPath] <string[]> [[-Destination] <string>] [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]
Move-Item [-Path] <string[]> [[-Destination] <string>] [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]
描述
Move-Item Cmdlet 會在不同位置之間移動項目及其屬性、內容和子項目。這些位置必須受到相同提供者支援。例如,此命令可以從某個目錄將檔案或子目錄移動到另一個目錄,或是從某個機碼將登錄子機碼移動到另一個機碼。當移動項目時,此項目會新增到新位置上,並從其原始位置中刪除。
參數
-Credential <PSCredential>
指定具有執行此動作之權限的使用者帳戶。預設為目前使用者。
請輸入使用者名稱,例如 "User01" 或 "Domain01\User01",或是輸入 PSCredential 物件,例如由 Get-Credential Cmdlet 所產生的物件。如果輸入使用者名稱,將會提示您提供密碼。
所有隨 Windows PowerShell 安裝的提供者都不支援此參數。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Destination <string>
指定項目的移動目的地位置所在路徑。預設值為目前目錄。允許使用萬用字元,但其結果必須指定單一位置。
若要重新命名待移動的項目,請利用 Destination 參數的值指定新名稱。
必要? |
false |
位置? |
2 |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Exclude <string[]>
忽略指定的項目。此參數的值用於限定 Path 參數。輸入路徑元素或模式,例如 "*.txt"。允許使用萬用字元。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Filter <string>
指定以提供者的格式或語言表示的篩選器。此參數的值用於限定 Path 參數。篩選器的語法 (包括萬用字元的用法) 依提供者而定。篩選器比其他參數更有效率,因為提供者會在擷取物件時套用篩選器,而非等到 Windows PowerShell 擷取物件後才進行篩選。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Force
允許此 Cmdlet 移動可覆寫現有唯讀項目的某個項目。實作因提供者而異。如需詳細資訊,請參閱 about_Providers。即便使用 Force 參數,此 Cmdlet 也無法覆寫安全性限制。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Include <string[]>
只移動指定的項目。此參數的值用於限定 Path 參數。輸入路徑元素或模式,例如 "*.txt"。允許使用萬用字元。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-LiteralPath <string[]>
指定項目目前所在位置的路徑。LiteralPath 與 Path 不同,係取用實際輸入的內容做為參數值。任何字元均不被解譯成萬用字元。如果路徑中包含逸出字元,請將其置於單引號內。單引號係告訴 Windows PowerShell 不要將任何字元解譯成逸出序列。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-PassThru
會將代表項目的物件傳遞給管線。根據預設,此 Cmdlet 不會產生任何輸出。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Path <string[]>
指定項目目前所在位置的路徑。預設值為目前目錄。允許使用萬用字元。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByValue, ByPropertyName) |
接受萬用字元? |
false |
-Confirm
在執行命令前先提示確認。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-WhatIf
說明執行命令時將會發生何種情況,但不會實際執行命令。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-UseTransaction
將命令加入現用交易中。此參數只有當交易進行中時才有效。如需詳細資訊,請參閱 about_Transactions。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.String 您可經由管道將包含路徑的字串輸出至 Move-Item。 |
輸出 |
無,或是代表已移動之項目的物件。 當您使用 Passthru 參數時,Move-Item 會產生可代表已移動之項目的物件。否則,這個 Cmdlet 不會產生任何輸出。 |
附註
Move-Item 將在相同提供者所支援的磁碟機之間移動檔案,不過,它只會在相同磁碟機中移動目錄。
因為 Move-Item 命令會移動項目的屬性、內容和子項目,因此,依預設會遞迴完成所有的移動作業。
您也可以利用 Move-Item 的內建別名 ("move"、"mv" 和 "mi") 對其進行參照。如需詳細資訊,請參閱 about_Aliases。
Move-Item Cmdlet 設計的用意是要操作任一提供者所公開的資料。若要列出可在工作階段中使用的提供者,請輸入 "Get-PsProvider"。如需詳細資訊,請參閱 about_Providers。
範例 1
C:\PS>move-item -path C:\test.txt -destination E:\Temp\tst.txt
描述
-----------
這個命令會將 C: 磁碟機的 Test.txt 檔案移動到 E:\Temp 目錄中,並將檔名 "test.txt" 重新命名成 "tst.txt"。
範例 2
C:\PS>move-item -path C:\Temp -destination C:\Logs
描述
-----------
這個命令會將 C:\Temp 目錄及其中內容移動到 C:\Logs 目錄。Temp 目錄及其中的所有子目錄和檔案接著都會出現在 Logs 目錄下。
範例 3
C:\PS>move-item -path .\*.txt -destination C:\Logs
描述
-----------
這個命令會將位在目前目錄中 (以點 (.) 代表) 的所有文字檔 (*.txt) 移動到 C:\Logs 目錄。
範例 4
C:\PS>get-childitem -path . -recurse -include *.txt | move-item -destination C:\TextFiles
描述
-----------
這個命令會將目前目錄及其所有子目錄中的所有文字檔遞迴移動到 C:\TextFiles 目錄。
這個命令使用 Get-ChildItem Cmdlet 取得目前目錄 (以點 (.) 表示) 及其子目錄中副檔名為 *.txt 的所有子項目。它會使用 Recurse 參數進行遞迴擷取,並使用 Include 參數限制僅擷取 *.txt 檔案。
管線運算子 (|) 會將這個命令的結果傳送給 Move-Item,並由其將這些文字檔移動到 TextFiles 目錄。
如果要移動到 C:\Textfiles 的檔案具有相同名稱,Move-Item 會顯示錯誤並繼續進行,但是,它只會將每一個名稱的一個檔案移動到 C:\Textfiles。其他檔案會保留在它們原來的目錄中。
如果 Textfiles 目錄 (或目的路徑的其他任何項目) 不存在,則此命令會失敗。即使使用了 Force 參數,也不會為您建立遺失的目錄。Move-Item 移動第一個項目到名稱為 "Textfiles" 的檔案,然後顯示說明檔案已經存在的錯誤。
此外,根據預設,Get-ChildItem 不會移動隱藏的檔案。若要移動隱藏的檔案,請配合 Get-ChildItem 使用 Force 參數。
範例 5
C:\PS>move-item hklm:\software\mycompany\* hklm:\software\mynewcompany
描述
-----------
這個命令會將位在 HKLM\Software 之 MyCompany 登錄機碼中的登錄機碼和值移動到 MyNewCompany 機碼。萬用字元 (*) 會指出應該要移動 MyCompany 機碼內容,而不是移動機碼本身。在這個命令中,已省略 Path 和 Destination 選擇性參數名稱。
範例 6
C:\PS>move-item -literalpath 'Logs[Sept`06]' -destination 'Logs[2006]'
描述
-----------
這個命令會將 Logs[Sept`06] 目錄 (及其中內容) 移動到 Logs[2006] 目錄中。
使用 LiteralPath 參數而不使用 Path,因為原始目錄名稱包含左、右方括號字元 ("[" 與 "]")。而且因為路徑已經括在單引號 (' ') 中,因此倒引號符號 (`) 不會遭到錯誤解譯。
因為 Destination 變數也必須用單引號括住,這樣就會包括可能遭錯誤解譯的括弧,所以,Destination 參數不需要常值路徑。
請參閱
概念
about_Providers
Clear-Item
Get-Item
Invoke-Item
Set-Item
New-Item
Remove-Item
Rename-Item
Copy-Item