将项从一个位置移动到另一个位置。

语法

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 生成的一个 PSCredential 对象。如果键入用户名,则将提示您输入密码。

随同 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[]>

指定指向项的当前位置的路径。与 Path 不同,LiteralPath 的值严格按照所键入的形式使用。不会将任何字符解释为通配符。如果路径包括转义符,请将其括在单引号中。单引号会告知 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

说明
-----------
此命令将 Test.txt 文件从 C: 驱动器移动到 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 变量也必须括在单引号中,因为它包括可能被曲解的方括号。






另请参阅




目录