正在尝试使用PowerShell从本地计算机复制文本文件内容,并将其添加到Linux服务器中的另一个文件中

正在尝试使用PowerShell从本地计算机复制文本文件内容,并将其添加到Linux服务器中的另一个文件中,linux,powershell,Linux,Powershell,我有一个文本文件,其中包含我希望添加到另一个存储在Linux服务器上的文件中的服务器名称。我需要使用什么命令将一个文本文件的内容添加到Linux中存储的另一个文件中。Linux中的文件仍应保留已存储的任何信息。该文件与Puppetautosign.conf相关。下面的脚本是我用来读取包含所需服务器名称列表的csv文件的脚本。该脚本实质上是以我希望列出的方式提取服务器名称。我现在需要这个命令将结果附加到Linux中的文件中 $data = Get-Content "C:\dev\Scrip

我有一个文本文件,其中包含我希望添加到另一个存储在Linux服务器上的文件中的服务器名称。我需要使用什么命令将一个文本文件的内容添加到Linux中存储的另一个文件中。Linux中的文件仍应保留已存储的任何信息。该文件与Puppet
autosign.conf
相关。下面的脚本是我用来读取包含所需服务器名称列表的csv文件的脚本。该脚本实质上是以我希望列出的方式提取服务器名称。我现在需要这个命令将结果附加到Linux中的文件中

$data =
    Get-Content "C:\dev\Scripts\Admin Scripts\Environment Deployment\vms2deploy.csv" |
    Select-Object -skip 1 |
    ConvertFrom-Csv -header name 
$myhosts = foreach ($item in $data) { Write-Output $item.name } 
$myhosts >> 'c:\temp\host_list.txt'
更新:

在阅读下面的建议时,我产生了一个想法,并想出了这些命令来运行以解决我的问题

Set-SCPFile -ComputerName servername -Credential (Get-Credential) -LocalFile "c:\temp\host_list.txt" -RemotePath "/home/puppetmaster"
Invoke-SSHCommand -Index 0 -Command "cat host_list.txt >> autosign.conf"
设置SCPFile-ComputerName-servername-Credential(获取凭证)-LocalFile“c:\temp\host\u list.txt”-RemotePath”/home/puppetmaster 调用SSHCommand-Index 0-命令“cat host_list.txt>>autosign.conf”


这样我就可以把我的文件发送到服务器,然后把它附加到我想要的地方。新的问题是autosign.conf似乎是二进制的,我的文本文件是utf-16le。如何将文本文件更改为二进制文件,以便在追加时不会出现问题。

如果要将CSV的内容传递到bash中的文件中,首先要将该文件复制到Linux机器上(例如WinSCP命令行工具可以使用),然后使用以下命令在bash中追加:

cat textile1 >> textfile2
如果windows服务器安装了IIS,您可以使其在专用IP和Linux计算机上可用:

curl http://192.168.120.10/textfile1 >>  textfile2
如果这是一个合适的选项,您也可以通过SMB共享使该文件可用,但这取决于环境。这看起来像:

cat smb://server1/share1/textfile1 >> textfile2

其中一个通常具有对Linux服务器的SFTP访问权限

因此,请使用任何支持文件附加的SFTP客户端

例如,对于,您可以在PowerShell脚本中使用以下命令

& winscp.com /log=log.log /command `
    "open sftp://username:password@example.com -hostkey=""...""" `
    "put -append c:\temp\host_list.txt /remote/path/list.txt" `
    "exit"
你可以给你一杯


(我是WinSCP的作者)

在阅读了其他答案后,我产生了一个想法,并想出了这些命令来运行以解决我的问题

Set-SCPFile -ComputerName servername -Credential (Get-Credential) -LocalFile "c:\temp\host_list.txt" -RemotePath "/home/puppetmaster"
Invoke-SSHCommand -Index 0 -Command "cat host_list.txt >> autosign.conf"

这样我就可以把我的文件发送到服务器,然后把它附加到我想要的地方

我在想,如果文件拷贝是计划好的,Linux端的cron可以执行行添加并截断原始文件,这取决于哪个拷贝选项对OP有效。但这只会导致有点混乱,所以这是一个更好的答案:)