Parsing 分析powershell中的值

Parsing 分析powershell中的值,parsing,powershell,Parsing,Powershell,所以我运行这个命令 $driverRAIDv = $data|where-object{$_.Name -eq "$serverName" -and ($_.Description1 -match "hpsa")} | select -ExpandProperty version 它返回这个值: HP HPSA驱动程序(V5.0.0-28OEM) 我想获取这个值/变量并解析它,这样我就只有5.0.0-28OEM试试看。基本上,我们正在创建一个“计算属性”,其中包含一个表达式,用于解析出所需值的

所以我运行这个命令

$driverRAIDv = $data|where-object{$_.Name -eq "$serverName" -and ($_.Description1 -match "hpsa")} | select -ExpandProperty version
它返回这个值:

HP HPSA驱动程序(V5.0.0-28OEM)


我想获取这个值/变量并解析它,这样我就只有
5.0.0-28OEM

试试看。基本上,我们正在创建一个“计算属性”,其中包含一个表达式,用于解析出所需值的部分

$driverRAIDv = $data|where-object{$_.Name -eq "$serverName" -and ($_.Description1 -match "hpsa")} | select -Property @{ Label = 'Version'; Expression = { [void]($_ -match ('v\s(.*?)\)')); $matches[1]; }; };
我使用以下代码对此进行了测试:

@{ Version = 'HP HPSA Driver (v 5.0.0-28OEM)'} | select -Property @{ Label = 'Version'; Expression = { [void]($_ -match ('v\s(.*?)\)')); $matches[1]; }; };
如果查看
选择对象
命令的帮助,您将看到可以通过PowerShell表达式创建计算属性,这些属性基本上修改属性的值。为此,创建一个包含两项的
哈希表
标签
表达式
标签
可以简单地设置为您正在修改的相同属性值。
表达式
是一个PowerShell
脚本块
,它执行某种类型的操作并返回结果。在我上面给出的示例中,我们对
Version
属性运行正则表达式,并将其作为结果返回


根据您的需求和您将获得的不同,您有许多方法可以做到这一点

一种方法是使用替换操作符。说,你有

$driverRAIDv="HP HPSA Driver (v 5.0.0-28OEM)"
$driverRAIDv -replace 'HP HPSA Driver \(v ','' -replace '\)',''
你可以得到5.0.0-28OEM

在同一行中:

$driverRAIDv = ($data|where-object{$_.Name -eq "$serverName" -and ($_.Description1 -match "hpsa")} | select -ExpandProperty version) -replace 'HP HPSA Driver \(v ','' -replace '\)',''

尝试此操作,匹配
括号中的任何内容:

编辑:…并删除v后跟空格:

$driverRAIDv=$data |其中对象{$\.Name-eq“$serverName”-和($\.Description1-match“hpsa”)}选择-ExpandProperty版本

$regex=“(?非regex选项将在
(空格)上拆分,并选择最后一个非空字符串

$driverRAIDv = $data|
    where {$_.Name -eq $serverName -and $_.Description1 -match "hpsa"} |
    foreach {$_.version.split('[() ]')| where {$_}| select -last 1}

文本“HP HPSA驱动程序(v)”是否始终在字符串中?@Jimbo是的,我相信soI尝试了您提供的行,但它错误地使用了
正则表达式模式:HP HPSA驱动程序无效(v.
否则,尽管它看起来使用起来很简单。@krousemw,嗯,我对更新的评论没有让我猜到,但我已经更新了这一行。你所要做的就是避免妄想症,因为它们在regexI中有特殊的意义。我尝试使用这个例子。我没有运气。可能是因为我不完全理解发生了什么。如果你有时间,你能再解释一点吗?这真是太神奇了!除了没有简单的方法可以摆脱我猜的“v”…谢谢你的提示!