Powershell提供 Copy-Item
cmdlet将项目从一个位置复制到另一个位置。此项目可以是文件、文件夹或目录。Copy-Item cmdlet提供了不同的功能和选项,如覆盖、筛选、排除、详细、进度等。在本教程中,我们将通过示例学习这些功能。
将文件复制到指定目录
我们将从一个简单的示例开始,在这个示例中,我们将把给定的文件复制到指定的目录。我们将使用只提供源文件和目标文件名及其路径。
PS> Copy-Item .config.sys test.sys
我们也可以使用 -Destination
选项指定如下所示的目的地。
PS> Copy-Item .config.sys -Destination test.sys

递归地将目录复制到指定目录
我们还可以使用将目录及其内容复制到指定的或目标目录 -Recurse
选项。Recurse选项将给定源目录的所有子文件和文件夹复制到目标目录。
PS> Copy-Item .PerfLogs PerfBack -Recurse
将文件复制到远程服务器
Copy-Item
是一个非常有用的命令,我们可以使用复制本地文件和文件夹到远程服务器,支持PS远程处理。在本例中,我们将使用 -ComputerName
选项。我们可以使用计算机名主机名或IP地址。在本例中,我们将使用IP地址复制到远程服务器 192.168.1.10
PS> Copy-Item .PerfLogs PerfBack -ComputerName 192.168.1.10
将目录复制到远程服务器
我们也可以复制本地 到远程服务器或系统的文件夹和目录。我们还将使用 -ComputerName
与上一个示例类似的选项。我们还将提供 -Recurse
选项以复制子文件夹和目录。
PS> Copy-Item .PerfLogs PerfBack -Recurse -ComputerName 192.168.1.10
从远程复制文件 服务器到本地服务器
我们还可以将远程文件从远程服务器复制到本地系统。我们将使用 New-PSSession
cmdlet并将此会话与 -ToSession
选项。在 本例中,我们将从名为 DC1
.
$Sessions=New-PSSession -ComputerName "DC1" -Credential "Poftutismail"PS> Copy-Item "C: est.txt" "D: est.txt" -ToSession $Sessions
从远程服务器复制目录 到本地服务器
我们还可以将远程服务器目录递归地复制到本地系统。我们将使用上一个示例中非常类似的命令。我们只提供 -Recurse
选项。
$Sessions=New-PSSession -ComputerName "DC1" -Credential "Poftutismail"PS> Copy-Item "C:PerfLogs" "D:PerfLogs" -Recurse -ToSession $Sessions
覆盖到文件
如果目标中有相同的文件或文件夹,则不会复制该文件或文件夹。如果我们想复制甚至目标文件或文件夹存在,我们需要强制它与覆盖选项。我们将使用 -Force
选项以覆盖。
PS> Copy-Item .config.sys test.sys -Force
根据名称筛选文件
在复制文件和文件夹时,我们可以过滤它们。如果我们不想复制指定的文件名。
相关文章: 有用的Linux命令
根据扩展名筛选文件
我们可以根据文件的扩展名过滤复制的文件。我们还将使用 -Exclude
或 -Include
选项并提供如下扩展 .txt
, .sql
在这个例子中,我们将过滤并只复制txt文件。
PS> Copy-Item .config.sys test.sys -Include "*.txt"
排除给定文件
我们还可以使用 -Exclude
选项。我们将提供部分文件名。在本例中,我们将排除以 Sql
.
PS> Copy-Item .config.sys test.sys -Exclude "Sql*"
详细复制操作
在复制操作期间,我们可能需要有关该操作的更多信息。我们可以使用 -Verbose
选项。
PS> Copy-Item .PerfLogs PerfBack -Recurse -Verbose
