导入CSV字段作为整数

时间:2016-03-11 17:02:59

标签: powershell math

我有一个看起来像这样的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

}

1 个答案:

答案 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将尝试使用字符串自动执行此操作。只要它是一个数字字符串,它就可以正常工作。