Move-Item
将项从一个位置移动到另一个位置。
语法
Move-Item
[-Path] <String[]>
[[-Destination] <String>]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Move-Item
-LiteralPath <String[]>
[[-Destination] <String>]
[-Force]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PassThru]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
说明
Move-Item
cmdlet 将项(包括其属性、内容和子项)从一个位置移到另一个位置。
这些位置必须由同一提供程序支持。
例如,它可以将文件或子目录从一个目录移到另一个目录,或者将注册表子项从一个键移到另一个键。
移动项时,会将其添加到新位置并从其原始位置中删除。
示例
示例 1:将文件移动到另一个目录并将其重命名
此命令将“Test.txt”文件从 C:
驱动器移动到“E:\Temp”目录,并将其从“test.txt”重命名为“tst.txt”。
Move-Item -Path C:\test.txt -Destination E:\Temp\tst.txt
示例 2:将目录及其内容移动到另一个目录
此命令将“C:\Temp”目录及其内容移动到“C:\Logs”目录。 “Temp”目录及其所有子目录和文件都会显示在“日志”目录中。
Move-Item -Path C:\Temp -Destination C:\Logs
示例 3:将指定扩展的所有文件从当前目录移动到另一个目录
此命令移动当前目录中的所有文本文件(“*.txt”)(由点('.')表示) 到“C:\Logs”目录。
Move-Item -Path .\*.txt -Destination C:\Logs
示例 4:以递归方式将指定扩展的所有文件从当前目录移到另一个目录
此命令以递归方式将所有文本文件从当前目录和所有子目录移动到“C:\TextFiles”目录。
该命令使用 Get-ChildItem
cmdlet 获取当前目录中的所有子项(由 dot [.]) 及其具有文件扩展名“.txt”的子目录。它使用 Recurse 参数使检索递归和 Include 参数将检索限制为“.txt”文件。
管道运算符(|
)将此命令的结果发送到 Move-Item
,它将文本文件移动到“TextFiles”目录。
如果要移动到“C:\Textfiles”的文件具有相同的名称,Move-Item
会显示错误并继续,但只会将每个名称的一个文件移动到“C:\Textfiles”。
其他文件保留在原始目录中。
如果“Textfiles”目录(或目标路径的任何其他元素)不存在,该命令将失败。
即使使用 Force 参数,也不会为你创建缺少的目录。
Move-Item
将第一个项目移动到名为“Textfiles”的文件,然后显示一个错误,说明该文件已存在。
此外,默认情况下,Get-ChildItem
不会移动隐藏的文件。
若要移动隐藏文件,请将 Force 参数与 Get-ChildItem
一起使用。
注意:在 Windows PowerShell 2.0 中,使用 Get-ChildItem
cmdlet 的 Recurse 参数时,Path 参数的值必须是容器。
使用 Include 参数指定 .txt 文件扩展名筛选器(Get-ChildItem -Path .\* -Include *.txt -Recurse | Move-Item -Destination C:\TextFiles
)。
Get-ChildItem -Path ".\*.txt" -Recurse | Move-Item -Destination "C:\TextFiles"
示例 5:将注册表项和值移到另一个密钥
此命令将“HKLM\Software”中的“MyCompany”注册表项中的注册表项和值移动到“MyNewCompany”键。 通配符 ('*') 指示应移动“MyCompany”键的内容,而不是密钥本身。 在此命令中,省略可选 路径 和 目标 参数名称。
Move-Item "HKLM:\software\mycompany\*" "HKLM:\software\mynewcompany"
示例 6:将目录及其内容移动到指定目录的子目录
此命令将“Logs[9'06]”目录(及其内容)移动到“Logs[2006]”目录中。
使用 LiteralPath 参数,而不是 Path,因为原始目录名称包括左括号和右括号字符(“[”和“]”)。 该路径还用单引号('')括起来,以便反杆符号(')不会被误解。
Destination 参数不需要文本路径,因为目标变量也必须用单引号引起来,因为它包含可以错误解释的括号。
Move-Item -LiteralPath 'Logs[Sept`06]' -Destination 'Logs[2006]'
参数
-Confirm
在运行 cmdlet 之前,提示你进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Credential
注意
任何随 PowerShell 一起安装的提供程序都不支持此参数。 若要模拟其他用户,或在运行此 cmdlet 时提升凭据,请使用 Invoke-Command。
类型: | PSCredential |
Position: | Named |
默认值: | Current user |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-Destination
指定要移动项的位置的路径。 默认值为当前目录。 允许通配符,但结果必须指定单个位置。
若要重命名要移动的项,请在 Destination 参数的值中指定新名称。
类型: | String |
Position: | 1 |
默认值: | Current directory |
必需: | False |
接受管道输入: | True |
接受通配符: | True |
-Exclude
指定此 cmdlet 从操作中排除的项目或项作为字符串数组。 此参数的值限定 Path 参数。 输入路径元素或模式,例如“*.txt”。 允许使用通配符。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-Filter
以提供程序的格式或语言指定筛选器。 此参数的值限定 Path 参数。
筛选器的语法(包括通配符的使用)取决于提供程序。 筛选器比其他参数更有效,因为提供程序在 cmdlet 获取对象时应用它们,而不是在检索对象后让 PowerShell 筛选对象。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-Force
强制命令运行而不要求用户确认。 实现因提供程序而异。 有关详细信息,请参阅 about_Providers。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Include
指定此 cmdlet 在操作中移动的项(作为字符串数组)。 此参数的值限定 Path 参数。 输入路径元素或模式,例如“*.txt”。 允许使用通配符。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-LiteralPath
指定项当前位置的路径。 与 Path 参数不同,LiteralPath 的值与键入时完全相同。 不会将任何字符解释为通配符。 如果路径包含转义字符,请将它括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。
类型: | String[] |
别名: | PSPath |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-PassThru
返回一个对象,该对象表示正在使用的项。 默认情况下,此 cmdlet 不生成任何输出。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Path
指定项当前位置的路径。 默认值为当前目录。 允许使用通配符。
类型: | String[] |
Position: | 0 |
默认值: | Current directory |
必需: | True |
接受管道输入: | True |
接受通配符: | True |
-UseTransaction
在活动事务中包含该命令。 此参数仅在事务正在进行时有效。 有关详细信息,请参阅about_Transactions。
类型: | SwitchParameter |
别名: | usetx |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-WhatIf
显示 cmdlet 运行时会发生什么情况。 cmdlet 未运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以通过管道传递包含此 cmdlet 路径的字符串。
输出
None or an object representing the moved item.
使用 PassThru 参数时,此 cmdlet 将生成表示移动项的对象。 否则,此 cmdlet 不会生成任何输出。
备注
此 cmdlet 将在同一提供程序支持的驱动器之间移动文件,但只会在同一驱动器中移动目录。
由于 Move-Item
命令移动项的属性、内容和子项,因此默认情况下,所有移动都是递归的。
此 cmdlet 旨在处理任何提供程序公开的数据。
若要列出会话中可用的提供程序,请键入 Get-PSProvider
。
有关详细信息,请参阅 about_Providers。