Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
正在尝试下载CSV文件,并使用Powershell以XML格式输出_Xml_Powershell_Csv_Download - Fatal编程技术网

正在尝试下载CSV文件,并使用Powershell以XML格式输出

正在尝试下载CSV文件,并使用Powershell以XML格式输出,xml,powershell,csv,download,Xml,Powershell,Csv,Download,我非常想下载一个CSV文件,并将其输出为XML。 如果我下载CSV并将其存储在一个文件中,然后读取它并将其转换为xml,我可以让它工作,但我非常希望跳过保存CSV文件,而只是将其保存在一个变量中 到目前为止,我已经: $headers = "a,b,c,d,e,f" $url = "verylongurl" $csvfile = Invoke-WebRequest $url | Select-Object -ExpandProperty Content Write-Output $csvfil

我非常想下载一个CSV文件,并将其输出为XML。 如果我下载CSV并将其存储在一个文件中,然后读取它并将其转换为xml,我可以让它工作,但我非常希望跳过保存CSV文件,而只是将其保存在一个变量中

到目前为止,我已经:

$headers = "a,b,c,d,e,f"
$url = "verylongurl"

$csvfile = Invoke-WebRequest $url | Select-Object -ExpandProperty Content
Write-Output $csvfile
这将显示我要查找的CSVfile,因此它位于我想要的变量中。 如果我保存它,我可以用

Import-Csv -Path "file.csv" -Header a,b,c,d,e,f | export-clixml c:\temp\out.xml
但我真的不想先通过文件保存

然后我尝试了:

ConvertFrom-Csv -InputObject $csvfile -Header $headers | export-clixml c:\temp\out.xml
但这会输出标题,然后是每行中的第一个字段吗?所以我想这不是解决问题的方法:-) 我觉得我真的很接近了,有人能帮我走最后一步吗

好的,我找到了一些答案,不知道为什么,但是如果我直接在行上写标题,它会将xml导出到一个文件:

ConvertFrom-Csv $csvfile -Header a,b,c,d,e,f | export-clixml c:\temp\out.xml
现在,我不想将其写入文件,而只想返回xml文件。 所以我试着用

ConvertFrom-Csv $csvfile -Header a,b,c,d,e,f | convertto-xml | Write-Output

,但这只是给了我一个空的XML文件。

我不明白你的目标是什么。我真的不明白使用
Export-Clixml
将CSV数据导出为PowerShell对象的目的。这看起来像是采用一种有用的通用数据文件格式(CSV)并将其转换为特定于域的XML文件格式(CLI XML),以便在PowerShell会话之间进行序列化

然而,这应该是可行的:

Invoke-WebRequest $url | 
    Select-Object -ExpandProperty Content |
    ConvertFrom-Csv -Headers $headers |
    ConvertTo-Xml |
    Select-Object -ExpandProperty OuterXml

至于标题问题:
-Header
需要一个列名数组,而
“a、b、c、d、e、f”
是一个字符串;使用
“a”、“b”、“c”、“d”、“e”、“f”
代替。还要注意的是
导出CliXml
转换为Xml
会产生不同的Xml表示形式。目标是将其导入可以处理Xml文件的prtg,而不是csv:-(我将尝试一下,谢谢!