add-content产生的流不可读

ede*_*ter 6 powershell

我有一个PowerShell脚本,可以在处理非常大的XML时将大量行转储到csv文件中.

在读取xml阅读器的过程中,我将每行写入csv文件,如下所示:

  $newline | add-content -path $csv_file
Run Code Online (Sandbox Code Playgroud)

这适用于99%,但偶尔我在日志中看到"添加内容:流不可读"的1或2个项目中的gazillions,我认为因为它正在忙着写过去的行.

任何决议?

Mar*_*ndl 6

它是一个旧帖子,但我遇到了类似的问题(使用Set-Content而不是Add-Content).就我而言,WriteAllText方法解决了这个问题.

这应该为你解决:

[System.IO.File]::AppendAllText($csv_file,$newline)
Run Code Online (Sandbox Code Playgroud)


Jim*_*Jim 5

如果您不想调用 Windows API,这里有一个 PowerShell 方法。在 do 循环中放入 try catch 块以重试,直到成功。

    $isWritten = $false

    do {
        try {
            Add-Content -Path $csv_file -Value $newline -ErrorAction Stop
            $isWritten = $true
        }
        catch {
        }
    } until ( $isWritten )
}
Run Code Online (Sandbox Code Playgroud)