powershell - 如何操作invoke-restmethod返回的对象?

标签 powershell

这是我再次遇到 Invoke-RestMethod 问题。希望在你的帮助下我能进步。这次的问题是我正在努力获取 ipaddress=10.128.64.44 的对象的端口值。

运行此代码:

$user = "admin"
$pass = 'Password1'
$ipdir = '10.128.64.44'
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user, $pass)))
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add('Authorization',('Basic {0}' -f $base64AuthInfo))


$uri = 'https://myhostname/MAM/wfservice/workers/'
$rep = Invoke-restmethod -method get -Header $headers -Uri $uri

 Foreach($worker_port in $rep){

      write-output $worker_port.WorkersList.Worker

 }

中返回此内容终端:

ActiveJobs          : 
ForbiddenAgentsList : ForbiddenAgentsList
IPAddress           : 10.128.64.34
LastMsgTime         : 2016-11-21T00:16:04.2813148+01:00
Name                : Worker02
NumOfSlots          : NumOfSlots
Port                : 52268
SelectedAgentsList  : SelectedAgentsList
Status              : Active 
Version             : 2.29.3740.0
Iteration           : 2016/2 SP3 (87)

ActiveJobs          : 
ForbiddenAgentsList : ForbiddenAgentsList
IPAddress           : 10.128.64.44 
LastMsgTime         : 2016-11-21T00:16:04.2813148+01:00
Name                : Worker05
NumOfSlots          : NumOfSlots
Port                : 53246
SelectedAgentsList  : SelectedAgentsList
Status              : Active
Version             : 2.29.3740.0
Iteration           : 2016/2 SP3 (87)

我考虑过运行这样的东西来获取端口:

if ( ($worker_port.WorkersList.Worker.IPaddress) -eq '10.128.64.44'){Write-Output $worker_port.Worker.Port }
         else {write-host "ouch!""}

...但似乎不是这样。它返回两个端口:

53246
52268

有人知道这里出了什么问题吗?我如何解析它以获取仅 10.128.64.44 的端口号。任何建议都将受到高度赞赏。

最佳答案

使用 Where-Object cmdlet 根据所需的 IPAddress 过滤对象,然后只需选择端口:

$rep.WorkersList.Worker | Where IPAddress -eq '10.128.64.44' | Select -expand Port

关于powershell - 如何操作invoke-restmethod返回的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40719153/

相关文章:

PowerShell 为 UIAutomation 打开远程 GUI session

powershell - 如何从对象输出中删除@{}标签

powershell - 如何从PS输出中过滤出特定值

powershell - Powershell:全局ArrayList上的迭代不符合预期

Powershell wget 协议(protocol)违规

powershell - 如何使用 powershell 从 Azure WebApp 删除文件?

powershell - 如果工作完成了怎么办

powershell - 获取文件夹路径和程序数据

powershell - 如何让 PowerShell 获取 "see".NET 枚举值?

powershell - 从 Powershell 传递实际的返回代码