[玩转系统] Copy-Item :像 PowerShell 中的老板一样复制文件
作者:精品下载站 日期:2024-12-14 12:36:49 浏览:13 分类:玩电脑
Copy-Item :像 PowerShell 中的老板一样复制文件
复制文件。这并不性感,但必须要做。在 GUI 中,我们使用剪贴板进行复制和粘贴,但在 PowerShell 中,我们有一个名为 Copy-Item 的 cmdlet。
用于复制文件的命令在所有 shell 语言中一直存在。在 PowerShell 领域,从 A 点到 B 点获取 PowerShell 脚本中的文件或文件夹副本的最流行方法是使用 PowerShell Copy-Item
cmdlet。此 cmdlet 允许我们复制文件和文件夹,同时使我们能够递归文件夹中的文件、使用通配符选择我们需要复制的文件,甚至使用 PowerShell Remoting 进行文件复制!
该is
cmdlet 是 PowerShell 提供程序 cmdlet 的一部分。它是一个通用 cmdlet,由其 Item 名词识别。这些提供程序 cmdlet 中的大多数都可以跨不同的提供程序使用,但在我使用 PowerShell 的近 10 年中,我只见过 Copy-Item
与文件系统提供程序一起使用。
通过使用此 cmdlet,PowerShell 允许开发人员以多种不同的方式复制文件和文件夹。
基本用法
最基本的是,Copy-Item
cmdlet 使用 Path
参数作为源文件路径和 Destination
将单个文件从 A 点复制到 B 点 参数作为目标文件夹路径。
PS> Test-Path -Path C:\PointB.txt
False
PS> Copy-Item -Path C:\PointA.txt -Destination C:\PointB\
PS> Test-Path -Path C:\PointB.txt
True
此 cmdlet 还可以复制空文件夹。我将列出 C:\EmptyFolder 文件夹中的项目,然后将其复制出来。
PS> Get-ChildItem -Path C:\EmptyFolder\
PS> Test-Path -Path C:\PointB\EmptyFolder -PathType Container
False
PS> Copy-Item -Path C:\EmptyFolder\ -Destination C:\PointB\
PS> Test-Path -Path C:\PointB\EmptyFolder -PathType Container
True
也许该文件夹中有一个只读文件。默认情况下,Copy-Item
不会覆盖它。要强制覆盖,只需添加 Force
参数即可。
使用 Copy-Item 进行选择性
除了复制单个文件或文件夹之外,我们还可以复制文件夹的全部内容。 Copy-Item 的 Path
参数接受通配符,如星号以匹配一个或多个字符,或问号以仅匹配单个字符。
PS> @(Get-ChildItem -Path C:\PointB).Count
0
PS> @(Get-ChildItem -Path C:\PointA).Count
10000
PS> @(Get-ChildItem -Path C:\PointB).Count
0
PS> Copy-Item -Path C:\PointA\* -Destination C:\PointB\
PS> @(Get-ChildItem -Path C:\PointB).Count
10000
PS> @(Get-ChildItem -Path C:\PointB).Count
0
PS> Copy-Item -Path 'C:\PointA?0.txt' -Destination C:\PointB\
PS> Get-ChildItem -Path C:\PointB\
Directory: C:\PointB
Mode LastWriteTime Length Name
-a---- 8/11/2017 8:59 AM 5 2600.txt
-a---- 8/11/2017 8:59 AM 5 2610.txt
-a---- 8/11/2017 8:59 AM 5 2620.txt
-a---- 8/11/2017 8:59 AM 5 2630.txt
-a---- 8/11/2017 8:59 AM 5 2640.txt
-a---- 8/11/2017 8:59 AM 5 2650.txt
-a---- 8/11/2017 8:59 AM 5 2660.txt
-a---- 8/11/2017 8:59 AM 5 2670.txt
-a---- 8/11/2017 8:59 AM 5 2680.txt
-a---- 8/11/2017 8:59 AM 5 2690.txt
将多个文件夹合并在一起
Copy-Item 的另一个很酷的功能是它能够同时复制多个文件夹。通过将多个路径传递给 Path
参数,Copy-Item
将查看每个路径,根据路径复制文件夹或文件并“合并”它们全部进入同一个目的地。
PS> Copy-Item -Path C:\PointB\*,C:\PointC\*,C:\PointD\* -Destination C:\PointE
PS> Get-ChildItem -Path C:\PointE
Directory: C:\PointE
Mode LastWriteTime Length Name
-a---- 11/11/2017 12:15 PM 2 PointBFile.txt
-a---- 11/11/2017 12:15 PM 2 PointCFile.txt
-a---- 11/11/2017 12:16 PM 4 PointDFile.txt
递归复制文件
您很可能不会很幸运,将所有文件都放在一个文件夹中,而其中也没有文件夹。我们通常会遇到这样的情况:父文件夹中有很多子文件夹,我们也想复制其中的文件。通过在Copy-Item
上使用Recurse
参数,它会很乐意在每个子文件夹中查找并递归地复制每个子文件夹中的所有文件和文件夹。
请注意,我将文件和文件夹从 Get-ChildItem
直接通过管道传输到 Copy-Item
。 Copy-Item
有管道支持!
PS> (Get-ChildItem -Path C:\PointB\ -Recurse).Count
5
PS> Get-ChildItem -Path C:\PointB\ | Copy-Item -Destination C:\PointC -Recurse
PS> (Get-ChildItem -Path C:\PointC\ -Recurse).Count
5
使用 PassThru 参数的优点
PowerShell 中的许多 cmdlet 都有 PassThru 参数。通常不返回任何内容的 Cmdlet 可以使用 PassThru 参数返回它们正在操作的对象。此 cmdlet 没有什么不同。当我第一次开始编写脚本时,我从未使用过这个参数,因为我觉得不需要。
例如,如果我想将文件复制到远程位置,然后在脚本中引用该文件,我会执行以下操作:
$remoteFilePath = '\WEBSRV1\c$\File.txt'
Copy-Item -Path C:\File.txt -Destination $remoteFilePath
Write-Host "I've just copied the file to $remoteFilePath"
这种方法有效,但还可以更好。为什么不直接捕获使用 PassThru
参数时从 Copy-Item
cmdlet 返回的对象,而不是为远程路径定义变量呢?返回的对象将始终具有目标文件路径。
$copiedFile = Copy-Item -Path C:\File.txt -Destination '\WEBSRV1\c$'
使用 PowerShell 远程会话复制文件
PowerShell v5 附带的一项很酷的功能是,该 cmdlet 能够不使用默认的 SMB 协议来传输文件,而是使用 WinRM 和 PowerShell 远程会话。通过使用 Session
参数,Copy-Item
使用现有的 PowerShell 会话并以这种方式传输文件。这是绕过防火墙的好方法,并且当会话通信被加密时,这也是一个额外的安全层。
PS> $session = New-PSSession -ComputerName WEBSRV1
PS> Invoke-Command -Session $session -ScriptBlock { Test-Path -Path C:\File.txt }
False
PS> Copy-Item -Path C:\File.txt -ToSession $session -Destination 'C:\'
PS> Invoke-Command -Session $session -ScriptBlock { Test-Path -Path C:\File.txt }
True
我们可以通过 SMB 复制 File.txt 文件,并希望 C$ 管理共享可用并使用 \\WEBSRV1\c$。由于我们使用了
ToSession
参数,因此目标路径将始终是运行远程会话的计算机的本地路径。
概括
Copy-Item
cmdlet 是您将反复使用的核心 PowerShell cmdlet 之一。在 PowerShell 中,以多种不同的方式复制文件、文件夹,它简单但功能强大,特别是它能够使用通配符、将多个文件文件夹合并在一起以及使用现有的 PowerShell 远程会话!
进一步阅读
- Robocopy 终极指南
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag