通过 Powershell Remoting 传输文件(如 linux 中的 scp)

Nic*_*lei 4 scripting powershell

在创建一些基于 powershell 的部署脚本的过程中,我非常想念一种通过 Powershell Remoting 将文件快速传输到另一台服务器(通过 Internet)的简单方法,例如 scp for linux。幸运的是,可以通过 Powershell Remoting 激活的东西。我忽略了什么吗?

Mat*_*sen 7

您可以使用 Invoke-Command 和Set-Content以下命令通过 PSRemoting 会话轻松地通过网络复制文件的内容:

$Session = New-PSSession -ComputerName "remotehost.domain.tld" -Credential (Get-Credential) -UseSsl

$FileContents = Get-Content -Path 'C:\path\to\arbitrary.file'
Invoke-Command -Session $Session -ScriptBlock {
    param($FilePath,$data)
    Set-Content -Path $FilePath -Value $data
} -ArgumentList "C:\remote\file\path.file",$FileContents
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这会将文件的内容放入内存中,对于可能不是什么大问题的小文件,对于大文件可能是一个非常现实的问题。 (3认同)