如何在单个命令中使用2列CSV文件?

时间:2017-04-27 09:36:18

标签: powershell powercli

我想在具有$serverip$ram的命令中使用serverip和ram,它位于相同的csv文件中。所以我想立即在foreach循环中使用相应的serverip和ram值。

csv文件是这样的:

sw02111 8
sw02014 4
sw02020 16

现在我想在for-each循环中将此值用于下面的命令:

Set-VM -VM $serverip -MemoryMB $ram

1 个答案:

答案 0 :(得分:3)

如果你的CSV文件有一个RAM标题行,那么ServerIP可以执行以下操作

Import-CSV YourFile.csv -header serverip,ram -delimiter ' ' | ForEach-Object {
    Set-VM -VM $_.ServerIP -MemoryMB $_.RAM
}

<强>解释

  • Import-CSV将CSV文件加载到PowerShell对象中,然后通过管道将其传递到ForEach-Object
  • 根据您问题中的CSV示例,我在Import-CSV命令中明确定义了标题为serverip,ram,并将分隔符定义为空格字符。如果您的CSV格式不同,则可能需要更改这些CSV,或者如果您有明确定义的CSV,则可能根本不需要这些设置。
  • 对象中的每个项目一次评估一个,并在循环中表示为$_
  • 由于CSV具有ServerIP和RAM标头,因此该对象具有通过.
  • 访问的等效属性