我正在使用powershell将文件复制到远程服务器
Copy-Item $localDir \\serverA\deploy -recurse
之后,我想在远程服务器上制作本地副本
Copy-Item \\serverA\deploy \\serverA\production
如何在服务器上执行最后一个命令,以加快复制时间?
答案 0 :(得分:2)
您可以使用Invoke-Command
和Get-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
)运行快速配置。