Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 使用Plink将.NET构建文件夹的内容复制到Ubuntu服务器_Powershell_Ssh_.net Core_File Transfer_Plink - Fatal编程技术网

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

Powershell 使用Plink将.NET构建文件夹的内容复制到Ubuntu服务器,powershell,ssh,.net-core,file-transfer,plink,Powershell,Ssh,.net Core,File Transfer,Plink,我正在PowerShell中构建一个预部署脚本,该脚本创建我的.NET核心Web Api应用程序的生产构建,然后通过SSH密钥将SSHs导入我的Ubuntu Digital Ocean Droplet 我目前正处于创建构建的阶段,使用copy Item将构建文件夹复制到我的服务器中,然后这就是我完全陷入困境的地方 我知道我可以从我的PowerShell脚本中运行BASH命令,因为我已经尝试了一些基本操作,比如创建和删除目录,我可以cd进出目录。我已尝试将复制的.NET build文件夹作为变量存

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

我目前正处于创建构建的阶段,使用
copy Item
将构建文件夹复制到我的服务器中,然后这就是我完全陷入困境的地方

我知道我可以从我的PowerShell脚本中运行BASH命令,因为我已经尝试了一些基本操作,比如创建和删除目录,我可以
cd
进出目录。我已尝试将复制的.NET build文件夹作为变量存储在内存中:
$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
设置位置$projectRootDir
编写主机“构建.NET应用程序…”
dotnet发布--配置发布--详细性正常
写入主机“已成功构建…”
写入主机“复制项目生成文件”
$build=复制项-路径$projectBuildPath-递归
#失败的原因显而易见
写入主机“远程处理到MusicPortal服务器…”
plink.exe-ssh-i$SSHKeyLocation$linuxRemoteHost“cd路径\到\server\build文件夹和粘贴${build}”
#SSH连接成功,粘贴命令失败
写入主机“远程成功,传输生成文件…”
出口0

为了成功地将复制的目录粘贴到我的服务器,我应该做什么?我对PowerShell和SSH很在行。

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

您不想使用
plink
。您想使用或(两者都是与
plink
相同的腻子包的一部分)


你可以假设正确!!!哈哈,老实说,我只是想更多地了解PowerShell,因为尽管我真的很喜欢使用工具,但我想了解它是如何工作的,并消除我对第三方的依赖:)谢谢你为我指明了正确的方向,我想我最好还是去看一些文档吧!PowerShell/.NET/Windows没有对SSH/SFTP/SCP的内置支持。您必须使用第三方软件或库或可选的Windows组件。这个答案在Powershell 5中是正确的,但Powershell core 6带有跨平台SSH。在您回答我的问题后不久,我发现了这个问题:)我仍然会使用PuTTY,因为我现在已经可以使用了hahaThat,这就是我所指的通过“一个可选的Windows组件”。它仍然不是内置的,您必须安装它(以及PowerShell 6)。啊,好的,请参阅文档,使其听起来像是PowerShell的一部分或至少是core的一部分的包。。。我想这就是我的假设
pscp -r -i $SSHKeyLocation $projectBuildPath $linuxRemoteHost:/path/to/server/build-folder/