【问题标题】:How do I use 2 columns of a CSV file in a single command?如何在单个命令中使用 CSV 文件的 2 列?
【发布时间】:2017-04-27 09:36:17
【问题描述】:

我想在具有 $serverip$ram 的命令中使用位于同一 csv 文件中的 serverip 和 ram。所以我想一次在foreach循环中使用对应的serverip和ram值。

csv文件是这样的:

sw02111 8
sw02014 4
sw02020 16

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

Set-VM -VM $serverip -MemoryMB $ram

【问题讨论】:

  • 这取决于您使用的是哪种 foreach 循环。你能分享代码的完整部分吗?查看 CSV 文件的标题也会有所帮助。

标签: powershell powercli


【解决方案1】:

如果您的 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 具有 ServerIP 和 RAM 标头,所以该对象具有通过 . 访问的等效属性

【讨论】:

  • 给定显示的 CSV,OP 可能需要使用 -header 和 -delimiter 选项。
猜你喜欢
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
相关资源
最近更新 更多