Powershell 从system.string类型的变量读取值

Powershell 从system.string类型的变量读取值,powershell,Powershell,我有一个变量$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

我有一个变量
$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 ENVICE-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
  • 另一种方法是将表拆分为列
    用逗号替换两个或多个空格
  • 由于您有适当的标题,因此可以
    从Csv转换
  • 选择对象
    所需的属性

样本输出:

Department Name   Environment Id
---------------   --------------
EMA-MET-CAT5-KY08 Environment-k7890 

感谢您的回复。我有两个问题1:-如何将system.string转换为PSObject。例如:-打印或检索所选值。在上表中,$gh有表格输出,因此如果我打印或导出csv,我不会得到表格格式,但导出csv给出“长度”“750”。问题2:-列标题“部门名称”/“环境Id”的名称中有空格,即使有空格,如何读取标题。。。
Department Name   Environment Id
---------------   --------------
EMA-MET-CAT5-KY08 Environment-k7890