【发布时间】:2022-01-07 21:14:04
【问题描述】:
我有一个包含两列计算机和一个操作的 CSV 我还有另一个包含 3 列计算机标识符序列号和设备 ID 的 CSV。
我想获取 CSV1 并获取计算机列并在 CSV2 中搜索这些值,看看它是计算机标识符还是序列号,然后给我匹配的设备 ID,以便我可以针对它运行另一个函数。
所以 CSV 1
| Computer | Action |
|---|---|
| CB12345 | Lock |
| 574638 | Unlock |
将搜索计算机值在 CSV 2 中的位置
| DeviceID | CB Number | Serial |
|---|---|---|
| 57687348 | CB12345 | 674Z2X3 |
| 34554345 | CB65487 | 474Z2X3 |
| 54868323 | CB45789 | 574Z2X3 |
| 15593235 | CB65976 | 974Z2X3 |
| 37593236 | CB35466 | 074Z2X3 |
一旦它找到值是 CB 编号还是序列号,它将获取其对应的设备 ID,以便我可以在另一个函数中使用它。
这是我目前所拥有的,但我不知道该怎么做,所以我可以同时使用这两个 CSV
$yesterday = [datetime]::Today.AddDays(-1).tostring("yyyy-MM-dd")
$date = get-date -Format yyyy-MM-dd
$CB = import-csv -Path "\\Scripts\GAM test\CBs"
$GAM = import-csv -Path "\\Scripts\GAM\CSV\$yesterday-GAMprintCROSbasic.csv"
```
<# foreach ($record in $CB)
{
if ($record.action = "Unlock")
{
$DeviceID = $record.deviceID
$DeviceAsset = $record.asset
E:\gam\gam.exe update cros $DeviceID action enable
Write-Output "$deviceID is being disabled. $deviceasset"
Start-Sleep 10 #>
【问题讨论】:
-
请edit 分享您的问题minimal reproducible example。
-
if ($record.action = "Unlock")在 PowerShell 中必须是if ($record.action -eq "Unlock") -
如果可以的话,我会考虑使用可以在 CSV1 和 CSV2 之间进行连接的工具,并在 CSV3 结果上运行 shell 脚本;否则每次运行时,您的脚本都需要将 CSV2 加载到 ram 中,如果 CSV2 很大,那么在自动化 CSV1 文件的高周转率方面可能会变得耗时且昂贵
标签: powershell csv google-admin-sdk