从 CSV 中获取价值

Getting value from CSV

我正在编写一个 PowerShell 脚本来读取 CSV。到目前为止,我一切正常,它能够从用户输入(分支编号)中找到值,并找到可用的 "Y" 的值。请看第二张图

第一张图片是我的CSV文件。

这就是我需要帮助的地方。我如何获得第一个可用 CoreID 的值?在此示例中,FMD354800000。获得第一个可用的 CoreId 后,我想将 Available 更改为 N

$Find = $ImportCSV | Select-String -Pattern $GetBranchNum

$Find -match "Y"

New-ItemProperty -path $CoreIP -name "TTable ID" -PropertyType String -Value "Test" -Force

使用 Import-Csv 导入 CSV:

$csv = Import-Csv 'C:\path\to\your.csv'

由于文件似乎是固定宽度的,您需要 Trim() 个字段才能检查它们的值。

$branchNumber = '8000'

$first = $csv | Where-Object {
    $_.'Branch Number'.Trim() -eq $branchNumber -and
    $_.Available.Trim() -eq 'y'
} | Select-Object -First 1

这会过滤 CSV 以查找具有给定分支编号且在字段 Available 中具有值 Y 的记录,并选择第一个匹配记录。

然后更改该记录的 Available 字段的值:

$first.Available = 'N'

示范:

PS C:\> $csv = Import-Csv 'C:\path\to\sample.csv'
PS C:\> $csv

Branch Number      CoreID            Available
-------------      ------            ---------
8000               FMD354800000      Y
8000               FMD354800001      Y
8000               FMD354800002      N

PS C:\> $first = $csv | Where-Object {
>>   $_.'Branch Number'.Trim() -eq '8000' -and
>>   $_.Available.Trim() -eq 'y'
>> } | Select-Object -First 1
>>
PS C:\> $first

Branch Number      CoreID            Available
-------------      ------            ---------
8000               FMD354800000      Y

PS C:\> $first.Available = 'N'
PS C:\> $first

Branch Number      CoreID            Available
-------------      ------            ---------
8000               FMD354800000      N

PS C:\> $csv

Branch Number      CoreID            Available
-------------      ------            ---------
8000               FMD354800000      N
8000               FMD354800001      Y
8000               FMD354800002      N

Select-String-match 运算符在这种情况下都不是特别有用,所以不要使用它们。