在“ CSV包含软件名称”列中
我需要从中搜索包含7-zip(或cmm)的关键字,如果搜索到它,请显示其版本。
$csvtxt = @'
softname,version
7-Zip 18.05 (x64),18.05
Adobe Acrobat DC,18.011.20038
Adobe CMM,1.0
Adobe Flash Player 27 ActiveX,27.0.0.187
Adobe Flash Player 27 PPAPI,27.0.0.187
'@
$csv = ConvertFrom-Csv $csvtxt
$soft1 = "7-zip"
$soft2 = "cmm"
答案 0 :(得分:1)
您可以使用-match
处理集合的方式。这将提供与正则表达式模式匹配的对象。
它做什么...
-match
运算符$FoundSoftware
集合这是代码...
# fake reading in a CSV file
# in real life, use Import-CSV
$InStuff = @'
softname,version
7-Zip 18.05 (x64),18.05
Adobe Acrobat DC,18.011.20038
Adobe CMM,1.0
Adobe Flash Player 27 ActiveX,27.0.0.187
Adobe Flash Player 27 PPAPI,27.0.0.187
'@ | ConvertFrom-Csv
$SoftwareList = @(
'7-zip'
'cmm'
)
$Regex_SL = $SoftwareList.ForEach({[regex]::Escape($_)}) -join '|'
$FoundSoftware = $InStuff -match $Regex_SL
# if you dislike the way that "-match" works directly on an array, use the next line
#$FoundSoftware = $InStuff.Where({$_.SoftName -match $Regex_SL})
$FoundSoftware
输出...
softname version
-------- -------
7-Zip 18.05 (x64) 18.05
Adobe CMM 1.0
如果只需要裸名,则可以使用Select-Object -ExpandProperty
来获取。 [咧嘴]
答案 1 :(得分:0)
您将在此处使用Where-Object
cmdlet。
ConvertFrom-Csv $CSVTxt | Where-Object -FilterScript { $_.SoftName -match "7-zip|cmm" } | Select-Object -Property Version
详细了解Where-Object here