我有从数据库读取并成功输出的Powershell。问题是,当我插入逗号时,程序将忽略它,因此当我打开.csv文件时,所有数据都位于一列而不是五列中。如何解决这个问题?

$count=0
do{
    try{
        $rdr = $cmd.ExecuteReader()


        while ($rdr.read()){
            $sql_output += ,@($rdr.GetValue(0), ",", $rdr.GetValue(1), ",", $rdr.GetValue(2), ",", $rdr.GetValue(3), ",", $rdr.GetValue(4))
            $count=$count + 1
        }
        $transactionComplete = $true
    }
    catch{
        $transactionComplete = $false
    }
}until ($transactionComplete)

$conn.Close()

foreach ($k in $sql_output){
     Add-Content D:\Script\Network_Threat_Protection.csv "$k"
}

最佳答案

我建议创建一个对象数组而不是字符串数组,然后可以只使用Export-CSV。它会像这样:

    $sql_output = @()
    while ($rdr.read()){
        $sql_output += [PSCustomObject][Ordered]@{
            Col1=$rdr.GetValue(0)
            Col2=$rdr.GetValue(1)
            Col3=$rdr.GetValue(2)
            Col4=$rdr.GetValue(3)
            Col5=$rdr.GetValue(4)
        }
        $count=$count + 1
    }

然后输出:
$sql_output | Export-CSV "D:\Script\Network_Threat_Protection.csv" -NoTypeInfo -Append

关于sql - 无法使数据库在Powershell中写入CSV,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24810698/

10-12 01:05