首页 > 解决方案 > 从 Windows Server 到 Linux 主机的 SCP

问题描述

我正在尝试使用 PowerShell 将压缩文件从共享驱动器传输到 Linux 主机。但是,当我使用

 scp \\path\to\compressed\file.zip user@linuxhost:/tmp

整个路径被复制到 Linux 主机上的 tmp 目录。

知道如何在没有附加完整路径的情况下仅传输 filename.zip 吗?

pscp 有效,但不适用于我为无密码登录生成的密钥。

标签: linuxpowershell

解决方案


使用完整的目标路径:

scp \\path\to\compressed\file.zip user@linuxhost:/tmp/file.zip

假设您将源文件路径作为用户输入,您可以单独获取文件名Split-Path

function Copy-TmpItem
{
    param(
        [ValidateScript({Test-Path $_ -PathType Leaf})]
        [Parameter(Position = 0, Mandatory = $true)]
        [string]$Path
    )

    $filename = Split-Path $Path -Leaf

    scp "'$Path'" "user@linuxhost:'/tmp/$filename'"
}

推荐阅读