將某個位置的項目移動到另一個位置。

語法

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。

輸出

None,或是代表已移動之項目的物件。

當您使用 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 參數不需要常值路徑。






請參閱




目錄