首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在powershell中解析值

在powershell中解析值
EN

Stack Overflow用户
提问于 2014-06-04 14:52:11
回答 4查看 657关注 0票数 0

所以我运行这个命令

代码语言:javascript
复制
$driverRAIDv = $data|where-object{$_.Name -eq "$serverName" -and ($_.Description1 -match "hpsa")} | select -ExpandProperty version

它返回这个值:

HP HPSA Driver (v 5.0.0-28OEM)

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-06-04 15:19:54

试试这个,匹配()括号之间的任何内容:

编辑:..and移除v后面的空格:

代码语言:javascript
复制
$driverRAIDv = $data|where-object{$_.Name -eq "$serverName" -and ($_.Description1 -match "hpsa")} | select -ExpandProperty version
$regex = "(?<=\().*(?=\))"
[regex]::matches($driverRAIDv,$regex).Value -replace "v "

返回:

代码语言:javascript
复制
5.0.0-28OEM

或者您可以使用下面的正则表达式,它将匹配(v)之间的任何内容

代码语言:javascript
复制
$regex="(?<=\(v\s).*(?=\))"
票数 2
EN

Stack Overflow用户

发布于 2014-06-04 14:58:31

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

代码语言:javascript
复制
$driverRAIDv = $data|where-object{$_.Name -eq "$serverName" -and ($_.Description1 -match "hpsa")} | select -Property @{ Label = 'Version'; Expression = { [void]($_ -match ('v\s(.*?)\)')); $matches[1]; }; };

我使用以下代码对此进行了测试:

代码语言:javascript
复制
@{ Version = 'HP HPSA Driver (v 5.0.0-28OEM)'} | select -Property @{ Label = 'Version'; Expression = { [void]($_ -match ('v\s(.*?)\)')); $matches[1]; }; };

如果您签出Select-Object命令的“帮助”,您将看到可以通过PowerShell表达式创建计算的属性,这基本上可以修改属性值。为此,创建一个包含两个项的HashtableLabelExpression。可以简单地将Label设置为您正在修改的相同的属性值。Expression是一个PowerShell ScriptBlock,它执行某种类型的操作,并返回结果。在上面给出的示例中,我们对Version属性运行一个正则表达式,并将其作为结果返回。

票数 1
EN

Stack Overflow用户

发布于 2014-06-04 14:59:23

你有很多方法去做这件事,这取决于你的需求和你将得到什么。

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

代码语言:javascript
复制
$driverRAIDv="HP HPSA Driver (v 5.0.0-28OEM)"
$driverRAIDv -replace 'HP HPSA Driver \(v ','' -replace '\)',''

会给你5.0.0-28OEM

同一行:

代码语言:javascript
复制
$driverRAIDv = ($data|where-object{$_.Name -eq "$serverName" -and ($_.Description1 -match "hpsa")} | select -ExpandProperty version) -replace 'HP HPSA Driver \(v ','' -replace '\)',''
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24040759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档