Powershell 将CSV字段作为监管者导入
我有一个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
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。谢谢你的帮助@非常欢迎你!如果我给人的印象是唐突的,我道歉。我只是想解释错误在哪里。