作为项目要求的一部分,我正准备一个脚本将文件从本地计算机复制到远程服务器(使用用户名和密码)
我尝试了以下方式,文件是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
两种方式都要进行,请在没有安装目标文件夹的情况下建议任何其他方式实现
答案 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