【发布时间】:2021-10-11 09:58:50
【问题描述】:
我需要将有关服务器的一些信息保存到 csv 文件中。将保存到此文件的信息将像循环一样添加,因此,在某种程度上,我需要将信息附加到文件中。
我尝试了两种方法,但似乎都不起作用(变量 ip、id、name 和 stauts 在脚本的最终版本中不会是静态的):
-
添加内容
for($i=0; $i -lt 5; $i++){ $OutFile = "C:\information.csv" $test = Test-Path -Path $Outfile $id=$i $ip="1234$i" $name="Server$i" $status="up" if(!$test) { Add-Content -Path $Outfile -Value '"ID","IP","Name","Status"' }Add-Content -Path $OutFile -Value $id,$ip,$name,$status
}
当我运行此脚本时,所有信息都放在同一列/标题中。
-
创建空的 CSV 文件并向其中添加内容:
for($i=0; $i -lt 5; $i++){ $OutFile = "C:\information.csv" $test = Test-Path -Path $Outfile $id=$i $ip="1234$i" $name="Server$i" $status="up" if(!$test) { $newcsv = {} | Select "ID", "NAME","IP","STATUS" | Export-Csv $OutFile } $csvfile = Import-Csv $OutFile $csvfile.ID = $id $csvfile.NAME = $ip $csvfile.IP = $name $csvfile.STATUS = $status $csvfile | Export-CSV $outfile –Append }
当我运行这个脚本时,我会收到每个标题的错误消息:
在此对象上找不到属性“ID”。验证 属性存在,可以设置。
但是文件创建了,信息放在了正确的头中,但是每个头的内容是错误的,并且ID头和我创建的变量的值不同
我最适合将值附加到 csv 文件,我做错了什么让输出显示在图片中?
我可以回答有关此问题的任何问题。感谢您的宝贵时间。
【问题讨论】:
-
您无需测试 (
Test-Path)、创建和/或加载您的Csv文件 (Import-Csv)。只需Export-CSV $outfile –Append就足以在 powershell 中创建一个 CSV 文件并将内容附加到其中 -
我需要测试路径来检查路径是否存在。如果它存在,它只会附加信息而不是从头开始创建文件
-
Export-CSV $outfile –Append将创建文件(并立即添加内容)如果不存在并且追加内容,如果它确实存在。
标签: powershell csv