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 生成的一个 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 变量也必须括在单引号中,因为它包括可能被曲解的方括号。
另请参阅
概念
about_providers
Clear-Item
Get-Item
Invoke-Item
Set-Item
New-Item
Remove-Item
Rename-Item
Copy-Item