使用Plink将.NET构建文件夹的内容复制到Ubuntu服务器

时间:2019-09-04 18:33:15

标签: powershell ssh .net-core file-transfer plink

我正在PowerShell中构建一个预部署脚本,该脚本创建.NET Core Web Api应用程序的生产版本,然后通过SSH密钥SSH到我的Ubuntu Digital Ocean Droplet中。

我目前处于创建构建的阶段,使用Copy-Item复制构建文件夹,将SSH复制到服务器中,然后我就完全陷入了这一困境。

我知道我可以从PowerShell脚本运行BASH命令,因为我尝试了一些基本操作,例如创建和删除目录,可以cd进入和退出目录。我尝试将复制的.NET构建文件夹作为变量存储在内存中: $build = Copy-Item -Path $projectBuildPath -Recurse,然后发现无法完成此操作(真可惜,这本来很酷),然后通过p-link cli向我的服务器打开会话,如下所示:

plink.exe -ssh -i $SSHKeyLocation $linuxRemoteHost "cd path\to\server\build-folder && paste ${build}"

但是由于您无法将复制的目录存储在内存中,因此再次失败。

我的PowerShell脚本如下所示:

$projectRootDir
$projectBuildPath
$linuxRemoteHost
$SSHKeyLocation

Set-Location $projectRootDir
Write-Host "Building .NET application..."

dotnet publish --configuration Release --verbosity normal

Write-Host "Built Successfully..."
Write-Host "Copying project build files"

$build = Copy-Item -Path $projectBuildPath -Recurse
# fails, for obvious reasons

Write-Host "Remoting into MusicPortal Server..."

plink.exe -ssh -i $SSHKeyLocation $linuxRemoteHost "cd path\to\server\build-folder && paste ${build}"
# SSH Connection successful, paste command fails

Write-Host "Remote successfull, transfering build files..."

exit 0

我应该怎么做才能成功地将复制的目录粘贴到服务器上?我对PowerShell和SSH非常了解。

1 个答案:

答案 0 :(得分:1)

尝试使用plink将文件上传到服务器是很奇怪的。由于您没有给出任何特定原因,所以为什么要使用plink,我认为这是一个错误。

您不想使用plink。您要使用psftppscp(与plink属于同一PuTTY软件包的一部分)。

pscp -r -i $SSHKeyLocation $projectBuildPath $linuxRemoteHost:/path/to/server/build-folder/
相关问题