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



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

我目前处于创建构建的阶段,使用Copy-Item将构建文件夹复制到我的服务器中,然后这就是我完全卡住的地方。

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

plink.exe -ssh -i $SSHKeyLocation $linuxRemoteHost "cd pathtoserverbuild-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 pathtoserverbuild-folder && paste ${build}"
# SSH Connection successful, paste command fails
Write-Host "Remote successfull, transfering build files..."
exit 0

为了将复制的目录成功粘贴到我的服务器,我应该怎么做?我是PowerShell和SSH的菜鸟。

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

您不想使用plink.您想使用psftppscp(两者都与plink属于同一 PuTTY 包的一部分(。

pscp -r -i $SSHKeyLocation $projectBuildPath $linuxRemoteHost:/path/to/server/build-folder/

相关内容

最新更新