Powershell 将CSV字段作为监管者导入

Powershell 将CSV字段作为监管者导入,powershell,math,Powershell,Math,我有一个CSV,看起来像这样 server,total,used server1,1024,512 server2,2048,1024 我想导入csv并除以总数。我的当前代码将获得无效权限:(op_division:string).。我尝试在导入和数组中都将它们设置为整数,但效果不理想。有什么想法吗 $csv2 = Import-Csv -Header 'server', 'total', 'used' C:\test.csv $used = $csv2.used $total = $c

我有一个CSV,看起来像这样

server,total,used
server1,1024,512
server2,2048,1024
我想导入csv并除以总数。我的当前代码将获得
无效权限:(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

}

这里有几个虫子

首先,您说这是您的文件:

server,total,used
server1,1024,512
server2,2048,1024
但是,在导入CSV时,需要指定标题:

$csv2 = Import-Csv -Header 'server', 'total', 'used' C:\test.csv
这意味着
$csv2[0]
将成为文件的标题行。显然,您不能将字符串
'used'
除以字符串
'total'
。当文件中没有标题时,将使用
-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将尝试使用字符串自动执行此操作。只要是数字字符串,它就可以正常工作。

您的代码中没有显示转换的示例吗
$used
将是列表中所有服务器的字符串数组。它不知道如何自动将它们添加到一起。在循环中根本不使用
$record
<代码>导入Csv C:\test.Csv | ForEach对象{[int]$\uuu.used/$\uu.total*100}。你的文件有一个头,所以你不需要自己添加。原谅我,因为我是新的,这是我的第一篇文章。我在csv文件中没有标题。我添加它是为了显示每个列是什么。我正在导入csv行中添加标题。你的最后一个例子奏效了,我应该早点注意到这一点。我试过$csv2.used/$csv2.total,但$csv2应该是$record。谢谢你的帮助@非常欢迎你!如果我给人的印象是唐突的,我道歉。我只是想解释错误在哪里。