从 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
运算符在这种情况下都不是特别有用,所以不要使用它们。
我正在编写一个 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
运算符在这种情况下都不是特别有用,所以不要使用它们。