我有以下内容:
$WebContent = Invoke-WebRequest -Uri "URLHERE/$PCNAME" -UseDefaultCredential |
Select-Object -ExpandProperty Content
它输出完美:
Key1: sfsdfsdfsfdsfsdsfs Key2: SD:34:SD:34:SD:34 Version: 4 Timestamp: 4/13/2018 4:00:11 PM
但是我需要能够将Key1和Key2的内容放入一个变量中,而没有空格,并能够适应每个密钥的长度变化的可能性。
我试图使用Substring($len - 83,14)
来获取全部内容的长度并解析出密钥的确切位置,但是由于某些原因,它们的长度有所变化,有一些已经切断了密钥,因此错误的输出。我可能需要整行,然后将':'和''之后的所有内容放入变量中。
有什么想法吗?
答案 0 :(得分:3)
假设您得到的响应是文本,而不是结构化对象,则可以执行以下操作:
$data = $WebContent -replace ': ', '=' |
Out-String |
ConvertFrom-StringData
以上内容将用=
字符替换冒号,后跟一个空格,并将所有内容合并为一个字符串,以便ConvertFrom-StringData
可以将键/值对的列表转换为哈希表。然后,您可以将值分配给各个变量,如下所示:
$key = $data['Key1']
或按原样使用哈希表。
答案 1 :(得分:1)
将内容分割成几行,匹配所需的内容,然后忽略其余内容,替换不想要的部分,存储结果:
$test = @'
Key1: sfsdfsdfsfdsfsdsfs
Key2: SD:34:SD:34:SD:34
Version: 4
Timestamp: 4/13/2018 4:00:11 PM
'@
$result = ($test -split "`r?`n") -match '^key.: ' -replace '^key.: '
取决于您的意思是“将两个键放入一个变量”;这个结果将是一个字符串数组。
许多可能的方法之一。