【发布时间】:2022-10-17 16:52:39
【问题描述】:
我有一个 csv 文件。我正在使用选择字符串搜索一个值。 我需要识别特定列上的返回值 $线[崔]
$sLine= New-Object System.Collections.Hashtable
$sText = @"
Vendorid,Cui,Data,iStaus,CashVat
404,20955366,2022-08-11,1,True
1025,15293910,2022-08-11,-1,False
2022,27684873,2022-08-11,2,True
3055,29195059,2022-08-11,3,False
"@;
$csvText= $sText | ConvertFrom-csv -Delimiter ','
$sLine = $csvText |Select-string -Pattern '15293910' -SimpleMatch -Encoding utf8
找到的对象看起来像一个哈希表
'=====Match is is======='
$sLine
'=====Match was======='
返回值为
=====匹配是=======
@{供应商=1025;崔=15293910;数据=2022-08-11; iStaus=-1;现金增值税=假}
=====比赛是=======
但是下面的代码行没有返回值
'=====Get the desired value for the key======='
$sLine['CashVat'].value
'================================='
在调试窗口中不返回任何内容
GetEnumerator 也不返回键值对
$sLine.GetEnumerator() | ForEach-Object {
$message = '{0} is key {1} value' -f $_.key, $_.value
write-output $message
}
只列出 <> 73 次,相当于 $sLine 变量的长度 看起来 $sLine 只是一行文本,而不是哈希表格式
【问题讨论】:
-
您是否尝试过
$sLine.GetType()来验证它是什么类型。
标签: powershell