起初我有这段代码获取一个对象并显示一个特定的行。我得到的是这一行:
@{ "id": "nic-1867724-4351584-0",=}
现在我使用了-replace,我能够得到我原本想要的部分:
nic-1867724-4351584-0
这是给我简洁线条的代码。
$interfaceID = skytap vm show 4370436
$interfaceID = Out-String | Select-Object ($stream -like "*nic-[0-9]*")[0]
$right = $interfaceID -replace "....$"
$interfaceID = $right -replace "@{.............",""
Write-Host $interfaceID
有没有更好的方法呢?以防该字符串上有更多/更少的数字。
答案 0 :(得分:1)
您可以尝试使用正则表达式,例如将nic*
捕获到下一个"
:
$s='@{ "id": "nic-1867724-4351584-0",=}'
$nic=[regex]::match($s,'(nic-(.)*?)"').Groups[1].value
答案 1 :(得分:0)
第一个选项
$s='@{ "id": "nic-1867724-4351584-0",=}'
$s-replace'@|,='|ConvertFrom-Json
第二个选项
$s='@{ "id": "nic-1867724-4351584-0",=}'
$s-replace'",=}'-replace'.+"'