PowerShell中数组的大字符串

PowerShell中数组的大字符串,powershell,csv,Powershell,Csv,背景: 我通过we.NET网络客户端呼叫“下载”CSV $url="https://host.domain.ext/site/folder/file?format=csv" $username="USERNAME" $password="PASSWORD" $webclient = new-object System.Net.WebClient $webclient.Credentials = new-object System.Net.NetworkCredential($username,

背景: 我通过we.NET网络客户端呼叫“下载”CSV

$url="https://host.domain.ext/site/folder/file?format=csv"
$username="USERNAME"
$password="PASSWORD"

$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential($username, $password)
$webpage = $webclient.DownloadString($url)
在上面的$webpage之后是一个System.Sting。一串嗯?真奇怪。。。好的,我怎样才能把它变成一个数组,这样我就可以正确地解析它,就像我导入的CSV一样

我尝试过但不起作用的事情

$webpage | convertto-csv
$webpage | Export-csv $path
import-csv $webpage
我尝试过的工作,但都很混乱

$webpage >> $path
import-csv $path
PS
是的,文件中有逗号作为删除器。

您可以将其作为文件下载,从技术角度来看,此解决方案没有意义,但从it角度来看,它是非常明显的

$webclient.DownloadFile($uri, "c:\temp\tempfile")
如果不想下载,可以在回车
`r
或回车换行
`r`n
上将字符串拆分为数组

$url="http://samplecsvs.s3.amazonaws.com/Sacramentorealestatetransactions.csv"
$webclient = new-object System.Net.WebClient

# Split your string with `r  or `r`n
$webpage = $webclient.DownloadString($url)
$webpage.Split("`r") | ConvertFrom-Csv

# Download a file
$webclient.DownloadFile($url,"d:\temp\Sacramentorealestatetransactions.csv")
Import-Csv "d:\temp\Sacramentorealestatetransactions.csv"

你能发布$webpage的内容吗?我建议您在编写文件时指定编码。导出Csv有“-Encoding”参数。如果您有Csv字符串并希望有对象,则必须使用
ConvertFrom Csv
而不是
ConvertTo Csv
@PetSerAl将其锁定。谢谢大家!$array=($webpage | ConvertFrom Csv)@AaronWurthmann顺便问一下,为什么一个名为
DownloadString()
的方法返回了一个
string
?:-)@AaronWurthmann:您不需要在最后一条评论的代码片段中的管道周围加括号。如果您只需要在以后再次阅读它,则无需将其作为文件下载。当您将其从Csv传递到
ConvertFrom
时,为什么要进行行拆分?所有这些在这里都毫无意义。@Joey,只要测试一下我的代码,如果CSV文件包含
r而不是
r`n,如果忽略拆分,它就不会工作。最好在投票前进行测试。现在还不能修改它。不过,写入文件仍然是毫无意义和不必要的。有效的CSV不应该使用CR作为行分隔符(根据RFC)。@Joey,有时候从技术角度看没有意义的事情从IT角度看是显而易见的。当您管理每天数千行的数据流时,您更愿意解决问题,首先下载,然后处理数据。