powershell - 从 Powershell 中 Get-Item 的输出中获取字符串的一部分
问题描述
我的powershell命令如下
$BUILD_SOURCEVERSIONMESSAGE= (Get-Item Env:\BUILD_SOURCEVERSIONMESSAGE)
以这种格式返回输出
2018-10-26T01:08:44.7409834Z BUILD_SOURCEVERSIONMESSAGE Merge 569594f057e2c4bd0320159855e81e14216ca66f into 41107d0f0db5ef2986831db2182280e0c...
我正在尝试从上面的输出中解析字符串569594f057e2c4bd0320159855e81e14216ca66f。
我尝试将输出转换为字符串,将其拆分为空格,然后访问数组的第二个元素,如下所示。但是,我得到空字符串。如何访问所需的字符串?
echo $BUILD_SOURCEVERSIONMESSAGE
$out = $BUILD_SOURCEVERSIONMESSAGE | Out-String
$out1 = $out.split()
echo $out1[1]
解决方案
命令的简明等价物Get-Item Env:\BUILD_SOURCEVERSIONMESSAGE
——即检索环境变量的值BUILD_SOURCEVERSIONMESSAGE
——是表达式$env:BUILD_SOURCEVERSIONMESSAGE
。
使用 Powershell-split
运算符的一元形式,它通过任何非空的空白运行分割输入(同时剥离前导和尾随空白),您可以获得所需的输出,如下所示:
PS> (-split $env:BUILD_SOURCEVERSIONMESSAGE)[3]
569594f057e2c4bd0320159855e81e14216ca66f
索引通过3
提取由标记化产生的第 4 个-split
标记。
如果要对结果使用字符串插值:
$prefix = 'before<'; $postfix = '>after'
$val = (-split $env:BUILD_SOURCEVERSIONMESSAGE)[3]
# Output a synthesized string that applies a pre- and postfix, using
# {...} to enclose variable names to avoid ambiguity.
"${prefix}${val}${postfix}"
以上产生:
before<569594f057e2c4bd0320159855e81e14216ca66f>after
推荐阅读
- javascript - google maps api中的附近地点
- ios - AppStore 下载的 dSYM 中缺少 UUID dSYM(更多目标应用程序)
- angular - “ng build --prod”删除代码行,如果我使用 console.log(object),不删除
- regex - 崇高正则表达式匹配 wx.data.xxx 但不匹配 wx.data.yyy
- python - 在 Django-rest-framework 中创建具有关系的模型
- image - 如何在 Prestashop 中删除图像大小调整?
- excel - 如果单元格等于某个值,则执行某个字符串,否则执行另一个字符串
- javascript - 在 node.js 中一次读取一个 html 文件
- c# - 关闭窗口后的TaskCanceledException
- javascript - 下载图像时的加载器