将CSV格式的PowerShell对象直接写入FTP

时间:2018-08-07 00:46:00

标签: .net powershell csv ftp

PowerShell中是否可以将对象直接写入FTP?

例如,说我需要读取一个XML文件并将相关的片断发送到某个地方。  我将开始如下:

$URL = 'https://example.org/portal/v1/report01.xml'
$Response = [xml]( Invoke-WebRequest $URL -Method Get )
$Response.REPORT01.row | Select-Object id, date, name, balance-due

我知道我可以将其链接以创建CSV文件...

| Export-Csv -Path "c:\temp\report01.csv" -Encoding ASCII -NoTypeInformation

...,然后通过FTP将文件传输到最终目标。

我想知道的是,是否有足够的空间避免必须写入磁盘。所以我想做的就是获取响应,将其格式化为CSV,然后将其发送到需要发送的位置。

1 个答案:

答案 0 :(得分:2)

将内存数据上传到FTP服务器的最简单方法是使用WebClient.UploadString

$client = New-Object System.Net.WebClient
$client.Credentials = New-Object System.Net.NetworkCredential("username", "password")
$client.UploadString("ftp://ftp.example.com/remote/path/file.csv", $contents)

要以CSV内存形式获取对象数据,请使用ConvertTo-Csv而不是Export-Csv

$contents =
    (($data | ConvertTo-Csv -NoTypeInformation) -join [Environment]::NewLine) +
    [Environment]::NewLine