小编Tah*_*ker的帖子

从 Invoke-WebRequest 的响应中解析 XML

我正在尝试从对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 中获得的格式不同,但我不确定这里有什么问题。

xml powershell

3
推荐指数
1
解决办法
2万
查看次数

PowerShell-V5 Invoke-Webrequest 添加 2 个标头授权标头并接受接受标头

我正在尝试创建一个脚本,该脚本将使用 powershell 和 invoke-webrequest 自动升级 NSX,以利用 NSX Manager 的 API 调用。我已经完成了脚本,但脚本的某些部分我需要检查和匹配响应中的某些数据。事实上,NSX API 响应将 90% 为 xml 格式,但有时也可以为 json。如果响应是 json 格式,我的匹配将不起作用,并且脚本的某些部分也将不起作用,因为它期望 xml 并且无法将 json 转换为 xml。

据我了解,从 powershell v4 开始,您可以添加接受标头,但问题是我已经在使用一个标头进行授权。

是否可以在 powershell 的 invoke-webrequest 中添加多个标头,如果是,它会如何。

下面是我将检查已部署 NSX 的当前版本的脚本的一部分。所以它将匹配响应中的一个值,该值将显示版本。

#Variables to be used within the script.
[CmdletBinding()]
$NSXUsername = "admin"
$NSXPassword = "VMware1!"
$uriP = "https://HQ-NSX-01a.nsx.gss"


# Start time.
$startclock = (Get-Date)
Write-Host -BackgroundColor:Black -ForegroundColor:Green "Hello"
Write-Host -BackgroundColor:Black -ForegroundColor:Green "This script will help you to automate a full NSX environment deployment"
Write-Host …
Run Code Online (Sandbox Code Playgroud)

xml api powershell powershell-5.0

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

powershell ×2

xml ×2

api ×1

powershell-5.0 ×1