我有一个看起来像这样的CSV。
server,total,used
server1,1024,512
server2,2048,1024
我想导入总计使用的csv和除法。我正在使用当前代码获取invalidopertion: (op_division:string)...
。我试图在导入和数组内将它们设置为整数,但它没有按预期工作。任何想法?
$csv2 = Import-Csv -Header 'server', 'total', 'used' C:\test.csv
$used = $csv2.used
$total = $csv2.total
foreach($record in $csv2){
$used / $total
}
答案 0 :(得分:0)
这里有几个漏洞。
首先,你说这是你的文件:
server,total,used
server1,1024,512
server2,2048,1024
但是在导入CSV时指定标题:
$csv2 = Import-Csv -Header 'server', 'total', 'used' C:\test.csv
这意味着$csv2[0]
将成为文件的标题行。你显然不能将字符串'used'
除以字符串'total'
。如果文件中有 no 标题,则使用-Header
参数。
其次,当你这样做时:
$used = $csv2.used
$total = $csv2.total
您将$used
和$total
设置为值数组。同样,您不能将数组除以另一个数组。
第三,你在迭代数组,然后除以我们在上述步骤中设置的值。因此,您为每个$record
执行完全相同的操作。
试试这个:
$csv2 = Import-Csv C:\test.csv
foreach ($record in $csv2) {
$record.used / $record.total
}
您不必担心将字符串转换为数字值。 PowerShell将尝试使用字符串自动执行此操作。只要它是一个数字字符串,它就可以正常工作。