首页 > 解决方案 > 需要来自 Invoke-WebRequest 输出的特定字符串行

问题描述

我有以下内容:

$WebContent = Invoke-WebRequest -Uri "URLHERE/$PCNAME" -UseDefaultCredential |
              Select-Object -ExpandProperty Content

它输出完美:

键1:sfsdfsdfsfdsfsdsfs
键 2:标清:34:标清:34:标清:34
版本:4
时间戳:2018 年 4 月 13 日下午 4:00:11

但我需要能够将 Key1 和 Key2 的内容放入一个变量中,没有空格,并适应每个键长度变化的可能性。

我试图用Substring($len - 83,14)它来获取它的长度并解析出密钥的确切位置,但由于某种原因,它们的长度发生了变化,并且有些人切断了给出错误输出的密钥。我可能需要获取整行,然后将“:”和“”之后的所有内容放入变量中。

有任何想法吗?

标签: powershell

解决方案


假设您得到的响应是文本,而不是结构化对象,您可以执行以下操作:

$data = $WebContent -replace ': ', '=' |
        Out-String |
        ConvertFrom-StringData

以上将用字符替换冒号后跟空格=并将所有内容合并为单个字符串,以便ConvertFrom-StringData可以将键/值对列表转换为哈希表。然后你可以像这样为单个变量赋值:

$key = $data['Key1']

或者按原样使用哈希表。


推荐阅读