2014-10-10 123 views
0

PowerShell腳本Foreach循環不導出爲CSV文件

$(foreach ($k in $sql_output){ 
    $ip = $k[0] 
    $present = $k[1] 
    write-output $ip, $present 
}) | export-csv D:\Script\is_present.csv 

我希望is_present.csv看起來像

10.10.10.10 1 
10.10.10.11 1 
10.10.10.12 0 

相反,它看起來像

#TYPE System.DBNull 

如何解決?

回答

1
$(foreach ($k in $sql_output){ 
    [PsCustomObject]@{ 
     'IP' = $k[0] 
     'Present' = $k[1] 
    } 
}) | Export-Csv c:\temp\temp.csv -NoTypeInformation 

的循環是一樣一樣在你面前了。 Export-Csv與對象更好地協作,因此不知道您的數據來自我製作的對象並與[pscustomobject]需要PowerShell 3.0)對象。獲取該數據並將其傳遞給Export-Csv的下一個管道。 -NoTypeInformation將停止#TYPE System.Management.Automation.PSCustomObject作爲文件的第一行。

+0

此答案最有幫助 – Glowie 2014-10-14 16:55:22

1

嘗試用這種

$(foreach ($k in $sql_output){ 
     $ip = $k[0] 
     $present = $k[1] 
     $out = "{0,20}{1,30} -f $ip, $present 
     Write-output $out 
    }) | out-file D:\Script\is_present.csv 
+0

如何使$ ip和$ present在同一行上輸出。當我執行此操作時,我得到一行$ ip,下一行$ present,下一行$ ip,下一行$ present等 – Glowie 2014-10-10 19:13:10

+0

@Glowie:回答更新 – 2014-10-10 19:21:26

+0

@walia toumi現在,$ ip和$ present在同一行輸出,但同一列。如何在不同列上創建$ ip和$ present輸出。我嘗試在$ ip和$ present之間放置''',但它仍然不能解決問題 – Glowie 2014-10-10 19:28:59