将文件复制到远程计算机

时间:2017-08-14 08:48:42

标签: powershell

作为项目要求的一部分,我正准备一个脚本将文件从本地计算机复制到远程服务器(使用用户名和密码)

我尝试了以下方式,文件是27 KB和50 MB大小

我。使用ReadallBytes和WriteAllBytes     这适用于小文件27 KB,其中50 MB占用100%CPU并占用太多时间

$myfile = [System.IO.File]::ReadAllBytes("C:\Temp\test\a.txt")
$Stat = $null
$session=$null
$session = New-PSSession -computerName $server -credential $user
$Stat = Invoke-Command -Session $session -ArgumentList $myfile -Scriptblock {[System.IO.File]::WriteAllBytes("C:\temp\a.txt", $args)} -ErrorAction Stop

II。我试图用Copy-Item复制,但问题是目标目录不是mount指向

$Stat = Invoke-Command -ComputerName $server -ScriptBlock { Copy-Item -Path "C:\Temp\test\a.txt" -Destination "C:\temp\a.txt" -Recurse -Force -PassThru -Verbose } -Credential $user

两种方式都要进行,请在没有安装目标文件夹的情况下建议任何其他方式实现

2 个答案:

答案 0 :(得分:2)

Copy-Item -Path "C:\Temp\test\a.txt" -Dest "\\$($server)\c$\temp\a.txt"

使用内置驱动器共享来复制它,您可能需要为此提供信誉。

您可能会发现此辅助函数对于正确获取远程路径非常有用。

Function Get-RemotePath($Server,$Path){
    "\\$($Server)\$($Path -replace ':','$')"
}

Get-RemotePath -Server "SERVER01" -Path "C:\Temp\File.txt"

\\SERVER01\C$\Temp\File.txt

答案 1 :(得分:1)

为什么不使用WMI顶部复制文件?

它可以是异步的并且非常有效。

我在这里有一篇帖子对此进行了解释。

Powershell - Copying File to Remote Host and Executing Install exe using WMI