需要有关网络驱动器的Powershell Copy-Item的帮助

时间:2013-02-01 19:45:24

标签: powershell powercli copy-item

我正尝试使用以下命令从远程计算机使用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并运行此脚本......我绝对被困在这里,不知道如何解决它。

2 个答案:

答案 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

要注意的事项: 复制项将最后一项定义为对象。 用于复制您需要\ *

的文件夹的内容

如果您将自己的文件夹复制到新位置,则无需声明内容。