powershell - Powershell 脚本使用来自 .txt 或 .csv 的输入在第二个 .csv 文件中查找值
问题描述
群,第一次发问题,请耐心等待。尝试使用 Powershell 读取 1 个 .csv 文件并在第二个 .csv 中搜索与我从第一个 .csv 文件传递的内容相关的特定数据。假设这两个文件都包含一个标题为“名称”的列,该列中包含 PC 名称列表。第二个 CSV 文件还有一个标题为“id”的列,其中包含与该 PC 名称关联的唯一 ID(更复杂的是,可能有重复的 PC 名称,但每个都有唯一的 ID)。我想处理第一个 .csv 文件中的所有 PC 名称,在第二个 .csv 文件中搜索该 PC 名称的相应唯一 ID,然后将其设置为变量,以便我可以对其执行一些操作。下面的代码是我到目前为止所拥有的,我 m 手动提供 PC 名称,因为我似乎无法获取第一个文件的内容并将其传递给第二个文件。它将获得唯一 ID,但我似乎无法将其放入变量中。任何帮助,将不胜感激。
$computer = "T4763110"
$csv = Import-Csv "C:\Devices.csv"
$csv | Where-Object { $_.name -eq $computer } | % id
第一个 CSV 文件 第一个 CSV 文件
第二个 CSV 文件 第二个 CSV 文件
解决方案
您忘记Delimiter
在import-csv
. 当您使用基本的 Microsoft 编辑器打开 .csv 文件时,您可以查看分隔符。我的看起来像这样:
ID;Name
1;Alienware
2;Lexware
3;One
4;Chip
5;Stack
6;Linux
我为自己创建了一个名为 dev.csv 的新表,其中包含以下内容:
执行此代码时:
> $csv = Import-Csv "C:/Users/Desktop/dev.csv" -Delimiter ';'
> $csv
输出:
ID Name
-- ----
1 Alienware
2 Lexware
3 One
4 Chip
5 Stack
6 Linux
然后执行这个:
> $csv | where-object {$_.name -eq "Alienware"} | % id
1
要将其保存到变量中,只需将括号括起来即可。
> $idvar = ($csv | where-object {$_.name -eq "Alienware"} | % id)
> $idvar
1
推荐阅读
- perl - 为什么在没有粗逗号和严格的“use”行上允许使用前导连字符选项?
- ios - 设置 NSStreams 的正确方法?
- c++ - 使用智能指针作为 Qt 标准函数的参数
- python - Geoplot 不会绘制 geopandas 对象
- java - MongoDB 上的 QueryDSL 和操作
- python - 数据框长迭代
- sdk - NWJS SDK 未使用 package.json
- uitextfield - 在模拟器中运行时,键盘不显示文本字段
- c# - 是否可以注入绑定为子选项而不是 IConfiguration 的特定配置类
? - tabulator - 将嵌套的制表数据复制到剪贴板