用于在远程计算机上复制文件的PowerShell命令

时间:2014-12-31 10:01:30

标签: powershell

我需要使用PowerShell将文件从本地计算机复制到远程计算机。我可以使用以下命令将文件复制到远程计算机:

copy-item -Path d:\Shared\test.txt -Destination \\server1\Shared

以上命令使用网络共享路径来复制文件。我不想使用网络共享选项,因为该文件夹不会在远程计算机上共享。我尝试了以下命令,但没有工作。

copy-item -Path d:\Shared\test.txt -Destination \\server1\c$\Shared

Invoke-Command -ComputerName \\server -ScriptBlock {
  copy-item -Path D:\Shared\test.txt -Destination C:\Shared
}

请告诉我如何在不使用UNC路径的情况下使其正常工作。我对远程计算机上的该文件夹拥有完全权限。

6 个答案:

答案 0 :(得分:6)

我发现最快的方式,因为正在使用的帐户是管理员,所以要执行以下操作:

New-PSDrive -Name X -PSProvider FileSystem -Root \\MyRemoteServer\c$\My\Folder\Somewhere\
cd X:\
cp ~\Desktop\MyFile.txt .\
## Important, need to exit out of X:\ for unmouting share
cd c:\
Remove-PSDrive X

每次都有效。

答案 1 :(得分:4)

如果要推送文件,您必须有一个共享文件夹才能将文件从一个主机复制到另一个主机,或者在远程主机上复制文件:

Copy-Item -Path D:\folder\test.txt -Destination \\server1\remoteshare\

或在本地主机上,如果要提取文件:

Invoke-Command -ComputerName server1 -ScriptBlock {
  Copy-Item -Path \\localcomputer\localshare\test.txt -Destination C:\Shared\
}

管理共享(\\server1\c$)只能在您的帐户拥有该特定计算机的管理员权限时使用。

答案 2 :(得分:3)

如果没有可访问的共享,您必须将文件内容本身作为脚本的参数:

Invoke-Command -ComputerName \\server -ScriptBlock {
  $args[0] | Set-Content  C:\Shared\test.txt
  } -ArgumentList (Get-Content D:\Shared\test.txt -Raw) 

答案 3 :(得分:1)

Invoke-Command -ComputerName compname -Credential $cred  -ScriptBlock { Get-Content C:\myfolder\result.txt } >>res.txt

请注意C:\ myfolder \ result.txt位于远程计算机上

答案 4 :(得分:0)

这是一个适用于小文件的脚本。以管理员身份运行

#pre 5.0 powershell copy-item to remote computer
Write-Host "Remote copy a file"
$servers = @("server01.dot.com", "server02.dot.com")
foreach($server in $servers) {
$username = 'USERNAME'
$password = 'PASSWORD'
$pw   = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object Management.Automation.PSCredential ($username, $pw)
$myfile = [System.IO.File]::ReadAllBytes("C:\Temp\srctest.txt")
$s = New-PSSession -computerName $server -credential $cred
Enter-PSSession $s
Invoke-Command -Session $s -ArgumentList $myfile -Scriptblock {[System.IO.File]::WriteAllBytes("C:\Temp\desttest.txt", $args)}   
Write-Host "Completed"
Remove-PSSession $s
}

答案 5 :(得分:0)

Powershell 5(Windows Server 2016)

对于Windows的早期版本也为downloadable-ToSession也可以使用。

$b = New-PSSession B
Copy-Item -FromSession $b C:\Programs\temp\test.txt -Destination C:\Programs\temp\test.txt

PowerShell的早期版本

Copy-Item -Path \\serverb\c$\programs\temp\test.txt -Destination \\servera\c$\programs\temp\test.txt