如何在PowerShell中创建带指定编码的System.IO.StreamWriter实例
PowerShell 创建 UTF8 编码 StreamWriter 报错的解决办法
你遇到的这个问题其实挺常见的——PowerShell 在直接用逗号传递多个参数调用 .NET 构造函数时,经常会出现参数解析错误,它没能正确识别你要传递给 StreamWriter 构造函数的三个参数,反而把后续内容当成了 New-Object cmdlet 的其他参数,所以才会抛出「找不到对应参数数量的重载」的错误。
你想要调用的是接收「文件路径、是否追加写入、编码格式」的三参数 StreamWriter 构造函数,这里给你两种解决方法:
方法一:用
-ArgumentList明确指定构造参数
用 New-Object 的-ArgumentList参数把构造函数需要的参数打包传递,PowerShell 就能正确识别了:$f = New-Object System.IO.StreamWriter -ArgumentList "a.txt", $false, [System.Text.Encoding]::UTF8方法二:使用 .NET 静态方法调用语法(推荐)
如果你用的是 PowerShell 5.1 及以上版本,可以直接用 .NET 原生的静态构造方法,这种写法更直观,也不容易出参数解析问题:$f = [System.IO.StreamWriter]::new("a.txt", $false, [System.Text.Encoding]::UTF8)
内容的提问来源于stack exchange,提问作者Hooch
相关产品推荐
相关产品推荐

