如何通过PSCustomObject在PowerShell中将字符串写入CSV文件?
PowerShell字符串导出CSV的错误修正
我正在编写一个较大的PowerShell脚本,目前在写小型测试脚本解决字符串导出到CSV文件的问题。我知道用PSCustomObject让PowerShell向CSV添加条目,但不清楚怎么添加特定字符串条目(比如"valid"或"this is incorrect")。当前代码如下:
$CSVLog = New-Item "\\file path\Logs\$(Get-Date -f yyyy-MM-dd_hh-mm-ss) Test Log.csv" -ItemType File -Force $CSVLog.Add( [PSCustomObject]@{ 'Column 1' = [string]::"Test" #Yeah, didn't think it would be this simple, but had to try... } ) Export-CSV -NoTypeInformation -Path $CSVLog -Append
目前该代码会在控制台抛出错误,需要修改的地方及修正后的代码如下:
核心问题说明
New-Item返回的是文件系统对象,没有.Add()方法用来添加CSV数据,这是错误的用法。[string]::"Test"是错误的字符串赋值语法,直接写字符串值即可。
修正后的代码
首次写入CSV
# 定义CSV文件路径 $csvPath = "\\file path\Logs\$(Get-Date -f yyyy-MM-dd_hh-mm-ss) Test Log.csv" # 创建包含字符串条目的自定义对象 $logEntry = [PSCustomObject]@{ 'Column 1' = "Test" # 直接赋值字符串即可 } # 导出到CSV,自动创建文件 $logEntry | Export-CSV -NoTypeInformation -Path $csvPath -Force
追加新的字符串条目
如果后续需要向已存在的CSV追加内容,使用以下代码:
# 创建新的条目对象 $newEntry = [PSCustomObject]@{ 'Column 1' = "valid" } # 追加到CSV文件 $newEntry | Export-CSV -NoTypeInformation -Path $csvPath -Append -Force
关键说明
- 无需提前用
New-Item创建空文件,Export-CSV会自动生成不存在的文件,-Force参数确保操作顺利执行。 - 给
PSCustomObject属性赋值时,直接使用字符串字面量(如"Test"、"this is incorrect")即可,不需要额外的类型前缀。 - 必须通过管道(
|)将自定义对象传递给Export-CSV,这是PowerShell处理这类操作的标准方式。
内容的提问来源于stack exchange,提问作者RustyAndroid
相关产品推荐
相关产品推荐

