我正在尝试从对Invoke-WebRequest
我在 PowerShell 脚本中所做的响应的特定值进行解析,但我无法获得它。
例如,如果我使用邮递员来获取内容,我会得到以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<globalInfo>
<currentLoggedInUser>admin</currentLoggedInUser>
<versionInfo>
<majorVersion>6</majorVersion>
<minorVersion>2</minorVersion>
<patchVersion>4</patchVersion>
<buildNumber>4292526</buildNumber> <!-- this is what I need -->
</versionInfo>
</globalInfo>
Run Code Online (Sandbox Code Playgroud)
下面是我在脚本中使用的命令,但我什么也没得到:
$r = Invoke-WebRequest -Uri "$uriP/api/1.0/appliance-management/global/info" -Body $body -Method:Get -Headers $head -ContentType "application/xml" -ErrorAction:Stop -TimeoutSec 60
$bn = ($r.Content.globalInfo.versionInfo.buildNumber)
Run Code Online (Sandbox Code Playgroud)
此外,如果我使用,$bn = ($r.Content)
我将获得如下完整内容:
<?xml version="1.0" encoding="UTF-8"?>
<globalInfo><currentLoggedInUser>admin</currentLoggedInUser><versionInfo><majorVersion>6</majorVersion><minorVersion>2</minorVersion><patchVersion>4</patch
Version><buildNumber>4292526</buildNumber></versionInfo></globalInfo>
Run Code Online (Sandbox Code Playgroud)
我可以看到邮递员的响应格式与我仅使用 ( $r.Content
)在 PowerShell 中获得的格式不同,但我不确定这里有什么问题。
$r.Content
是一个字符串。在访问各个节点之前,您需要实际解析其中的 XML:
$bn = ([xml]$r.Content).globalInfo.versionInfo.buildNumber
Run Code Online (Sandbox Code Playgroud)