作为项目要求的一部分,我正在准备一个脚本,用于将文件从本地计算机复制到远程服务器(使用用户名和密码)
我尝试了以下方式,文件大小分别为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复制,但问题是目标目录未装入指向
$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
两种方式都有影响,请提出任何其他方法来实现而不安装目标文件夹
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句