我需要使用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路径的情况下使其正常工作。我对远程计算机上的该文件夹拥有完全权限。
答案 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)
对于Windows的早期版本也为downloadable。 -ToSession
也可以使用。
$b = New-PSSession B
Copy-Item -FromSession $b C:\Programs\temp\test.txt -Destination C:\Programs\temp\test.txt
Copy-Item -Path \\serverb\c$\programs\temp\test.txt -Destination \\servera\c$\programs\temp\test.txt