我正在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非常了解。