2016-08-30 63 views
1

我有一个时间赫克尝试导入CSV和运行调用-的WebRequest获取数据添加到一个新的列..进口CSV添加数据导出

$username = "Username" 
$password = cat C:\Password.txt | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password 

$csv = Import-Csv -Path C:\users\Desktop\ImportTest.csv 

foreach($c in $csv){ 

     $link = "https://MyURlToCallforData" 
     $uri= $link + $c.stuff 

     Invoke-WebRequest -Uri $uri -Credential $cred -UseBasicParsing| ConvertFrom-Json | Select-Object -Property lastIdReportTime 
} 

Export-Csv -Path C:\Users\Desktop\TestOutput.csv -NoTypeInformation 

没有我可以导入它很好,我打电话,我看到ISE上的结果,但我无法导出到CSV或追加当前的文件。

我已经试过各种东西,尝试添加新的内容尝试添加psObject和无论我做什么我就不行了,..

希望有人能在这里给我一只手。

CSV基本上是这样的。

Date,Description 
Text1,text2 
text3,text4 

,我想将它导出这样

Date,Description,NewInfo 
Text1,text2,new5 
text3,text4,new6 
+0

https://powershell.org/forums/topic/adding-columns-to-an-existing-csv/ – wOxxOm

回答

1

有几种办法,解决问题。 这里有一个:

$username = "Username" 
$password = cat C:\Password.txt | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password 

$csv = Import-Csv -Path C:\users\username\Desktop\ImportTest.csv 
$link = "https://MyURlToCallforData" 
foreach($c in $csv){ 

     $uri= $link + $c.stuff 
     $result = Invoke-WebRequest -Uri $uri -Credential $cred -UseBasicParsing| ConvertFrom-Json 
     $c | Add-Member -name "NewInfo" -MemberType NoteProperty -value $($result | Select-Object -ExpandProperty lastIdReportTime) 
     $c | Add-Member -name "SecondField" -MemberType NoteProperty -value $($result | Select-Object -ExpandProperty SomeOtherField) 

} 

$csv | Export-Csv -Path C:\Users\username\Desktop\TestOutput.csv -NoTypeInformation 

编辑:我只是意识到有一个与你的代码的问题:出口-CSV并不导出什么
第二个编辑:“-ExpandProperty”可能是强制性的,以避免某些类型mix-一团糟。

这是第二种可能的解决方案。选择你最喜欢的;)

$username = "Username" 
$password = cat C:\Password.txt | ConvertTo-SecureString 
$cred = New-Object -typename System.Management.Automation.PSCredential -argumentlist $username, $password 

$csv = Import-Csv -Path C:\users\username\Desktop\ImportTest.csv 

$link = "https://MyURlToCallforData" 
$csv = $csv | Select-Object -Property *,@{name="NewInfo";expression = { 

    $uri= $link + $c.stuff 
    Invoke-WebRequest -Uri $uri -Credential $cred -UseBasicParsing| ConvertFrom-Json | Select-Object -expandProperty lastIdReportTime 
}} 

$csv | Export-Csv -Path C:\Users\username\Desktop\TestOutput.csv -NoTypeInformation 
+0

现在,我要测试这些..第一个是字面上我以前但我认为我有它格式错误:(.. 你介意删除路径上的用户名吗?忘记我已经离开那里。 – JonnyBoy

+0

完成,还没有看到它:p – Poorkenny

+0

让我我知道你是否有问题,显然我无法测试整个事情,所以我只测试了一些位。 – Poorkenny