我正尝试使用以下命令从远程计算机使用Copy-Item
到另一台远程计算机:
Copy-Item -Path "\\machine1\abc\123\log 1.zip" -Destination "\\machine2\\c$\Logs\"
我经常收到错误“Cannot find Path "\\machine1\abc\123\log 1.zip
”
我可以访问该路径并从那里手动复制。
我以管理员的身份打开PowerCLI并运行此脚本......我绝对被困在这里,不知道如何解决它。
答案 0 :(得分:23)
这似乎与PowerShell v3一样有效。我没有v2方便测试,但有两个选项,我知道,应该工作。首先,您可以映射PSDrives:
New-PSDrive -Name source -PSProvider FileSystem -Root \\machine1\abc\123 | Out-Null
New-PSDrive -Name target -PSProvider FileSystem -Root \\machine2\c$\Logs | Out-Null
Copy-Item -Path source:\log_1.zip -Destination target:
Remove-PSDrive source
Remove-PSDrive target
如果你要做很多事情,你甚至可以将它包装在一个函数中:
Function Copy-ItemUNC($SourcePath, $TargetPath, $FileName)
{
New-PSDrive -Name source -PSProvider FileSystem -Root $SourcePath | Out-Null
New-PSDrive -Name target -PSProvider FileSystem -Root $TargetPath | Out-Null
Copy-Item -Path source:\$FileName -Destination target:
Remove-PSDrive source
Remove-PSDrive target
}
或者,您可以使用每个路径明确指定提供程序:
Copy-Item -Path "Microsoft.PowerShell.Core\FileSystem::\\machine1\abc\123\log 1.zip" -Destination "Microsoft.PowerShell.Core\FileSystem::\\machine2\\c$\Logs\"
答案 1 :(得分:1)
这对我来说全天都有效:
$strLFpath = "\\compname\e$\folder"
$strLFpath2 = "\\Remotecomputer\networkshare\remotefolder" #this is a second option that also will work
$StrRLPath = "E:\localfolder"
Copy-Item -Path "$StrRLPath\*" -Destination "$strLFpath" -Recurse -force -Verbose
要注意的事项: 复制项将最后一项定义为对象。 用于复制您需要\ *
的文件夹的内容如果您将自己的文件夹复制到新位置,则无需声明内容。