Powershell中是否有任何方法可以复制整个驱动器,例如d驱动器文件,但系统文件如$ recycle bin除外

问题描述 投票:0回答:1

我正在尝试使用powershell和Winscp.dll将整个驱动器例如D:驱动器文件从Windows复制到linux框中,但是当我尝试复制特定文件夹时,我能够将所有文件从该文件夹复制到linux路径。但是,当我尝试将整个D:驱动器数据复制到linux box文件夹时,出现以下错误。检索“ d:\ $ RECYCLE.BIN \ S-1-5-21-1458064458-1966517317-3155185246-1003 *。*”的文件列表时出错。系统错误。代码:5。

[我正在尝试使用powershell和winscp.dll将Windows的D:驱动器中的数据文件备份到ubuntu机器上。将一个文件夹复制到linux可以正常工作,但不能帮助我复制整个D:驱动器。

$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$transferResult =$session.PutFiles("d:\*", "/tmp/some/",$False,$transferOptions)
# Throw on any error
 $transferResult.Check()

预期的结果应该是,它应该将整个D驱动器复制到目标linux box文件夹,但是在检索文件列表“ d:\ $ RECYCLE.BIN \ S-1-5-21-1458064458-1966517317-3155185246-1003 *时出错” 。*“。系统错误。代码:5.即将到来。

powershell winscp
1个回答
0
投票

您可以使WinSCP .NET程序集跳过通过处理Session.QueryReceived event无法打开的所有文件和文件夹:

Session.QueryReceived

基于文章$session.add_QueryReceived( { Write-Host "Error: $($_.Message)" $_.Continue() } ) $session.PutFiles("d:\*", "/tmp/some/").Check() 的代码。


另一种选择是使用Recursively download directory tree with custom error handling从传输中明确排除有问题的文件和文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.