powershell - 从类型为 system.string 的变量中读取值
问题描述
$gh
我有一个带有以下输出的变量。我的意思是当我输入$gh
. 我将得到如下值。
PS C:\Windows\system32>$gh
No. Department Name Environment Id Location Name Ready Status Machine Pure Status
1 EMA-MET-CAT5-KY04 Environment-k2345 EMA Enabled GREEN
2 EMA-MET-CAT5-KY03 Environment-k89 EMA Enabled GREEN
3 EMA-EFT-JIU-FC Environment-k3456 EMA Enabled GREEN
4 EMA-MET-CAT5-KY08 Environment-k7890 EMA Not Ready UNKNOWN
5 EMA-MET-CAT5-KY02-ED Environment-k9 EMA Enabled GREEN
$gh
的类型System.String
如 所示$gh.GetType().fullname
。
我想从部门名称和环境 ID 中获取值到一个数组或变量中,这样如果我查询 EMA-MET-CAT5-KY08,我可以获得环境 ID Environment-k7890。
解决方案
假设部门名称和环境 ID 中没有空格,我将使用正则表达式 (regex) 查找行首的模式(数字、空格、名称、空格、id)并将它们放入哈希表中。
PS C:\> $lookup = @{}
PS C:\> [regex]::matches($gh, '(?m)^\d+\s+([^\s]+)\s+([^\s]+)').foreach{
$lookup[$_.groups[1].value] = $_.groups[2].value
}
PS C:\> $lookup
Name Value
---- -----
EMA-EFT-JIU-FC Environment-k3456
EMA-MET-CAT5-KY02-ED Environment-k9
EMA-MET-CAT5-KY04 Environment-k2345
EMA-MET-CAT5-KY03 Environment-k89
EMA-MET-CAT5-KY08 Environment-k7890
PS C:\> $lookup['EMA-MET-CAT5-KY08']
Environment-k7890
推荐阅读
- r - R to_categorical 用于使用 Keras 进行序列标记
- php - DialogFlow PHP 卷曲
- google-bigquery - 我想在我的选择查询结果中显示一个额外的列,并且该额外的列结果也是一个选择语句
- php - 如何将实体上的外键映射为Doctrine中的字段和映射?
- python - Flask UnboundLocalError:分配前引用的局部变量'latitu'
- rust - 为什么 match 表达式不会先于其他 arm 报告 catch-all arm (_) 的错误?
- vba - .copy _ 目标语法,范围错误
- excel - 名称 DYnamic Range excel 与偏移公式丢失参考
- javascript - 单击按钮后显示另一个(永久)按钮
- yii - 在yii2的where条件中使用字段作为递归函数