powershell复制远程文件

时间:2016-08-23 13:18:33

标签: powershell

我正在使用powershell将文件复制到远程服务器

Copy-Item $localDir \\serverA\deploy -recurse

之后,我想在远程服务器上制作本地副本

Copy-Item \\serverA\deploy \\serverA\production

如何在服务器上执行最后一个命令,以加快复制时间?

1 个答案:

答案 0 :(得分:2)

您可以使用Invoke-CommandGet-Credential在远程计算机上执行命令。

Invoke-Command -ComputerName "ServerA" -Credential (Get-Credential) -ScriptBlock {Copy-Item C:\deploy C:\production} -Authentication Kerberos

如果您想让会话保持更长时间打开,以便使用可以使用一次,那么您可以使用New-PSSession

# Setup Session with Credentials 
$Creds= Get-Credential -UserName "Domain\Username" -Message "Enter Password"
$psSession = New-PSSession -ComputerName "ServerA" -Credential $Creds -Authentication Kerberos 

# Run a command
Invoke-Command -Session $psSession -ScriptBlock {Copy-Item \\serverA\deploy \\serverA\production}
...
# Run another command later
Invoke-Command -Session $psSession -ScriptBlock {<#Another command later on...#>}

使用以下命令将参数传递给会话。

Invoke-Command -Session $psSession -ArgumentList @($serverPath1,$serverPath2) -ScriptBlock {
    Param($serverPath1,$serverPath2)
    Copy-Item $serverPath1 $serverPath2
} 

请确保在使用后使用以下

关闭连接
Get-PSSession | Remove-PSSession

注意:您需要在服务器上配置并运行WinRM以进行远程管理。您可以使用命令(winrm qc)运行快速配置。