我正在使用Invoke-WebRequest来获取HtmlWebResponseObject对象.当描述字段匹配特定字符串(在本例中为"server1")时,我想获取ID字段的值.Invoke-WebRequest返回了数百个结果(因此字符串超长)鉴于下面的示例,我将如何提取ID?
{"status":200,"data":[{"nextRecipient":0,"clearSent":true,"lastSentNotificationOn":0,"netscanVersion":"0","suppressAlertClear":"false","build" :"19000","lastSentNotificationOnLocal":"","id":6,"resendIval":15,"watchdogUpdatedOn":"2016-04-11 10:28:02 MDT","escalatingChainId":6,"description ":"domain\server1","ackComment":"","credential2":"","updatedOn":1460392096,"updatedOnLocal":"2016-04-11 10:28:16 MDT","agentConf": "product.code = {guid}\r \n#安装程序版本,不得修改\ r \n \ninstaller.version = 0001\r \n\r \n#由代理配置向导生成\ r \n \n \n \n \net = url\r \n \ncompany = company\r \nid = 6\r \n ncredential == cred\r \n\r \n#logger settings.将logger.size设置为0,对记录器大小没有限制,否则,大小限制为指定的Mbytes那个\ r \n \nlogger.output = console\r \n \nlogger.logfile =\r \n \nlogger.size = 64\r \n \nlogger.level = info\r \n\r \n#watchdog log level\r \nlogger.watchdog = info\r \n#为每个组件添加更详细的控件\ r \n#eg\r \n #logge r.level.controller = debug\r \n#\ r \n#如果没有设置,它将使用默认日志级别,即logger.level的值\ r \n#\ r \n\r \n#if if agent应监视看门狗,默认为false\r \n \nntagemonitorwatchdog = true\r \n\r \n#是否看门狗升级代理,默认为true\r \n \nntage.autoupgrade = true\r \n\r \n#服务连接超时.连接默认为5秒,发送/读取服务器的默认值为30秒\ r \n服务.connect_timeout = 5\r \n服务.read_timeout = 30\r \n\r \n#SSL和代理设置\ r \nssl. enable = true\r \nproxy.enable = false\r \nproxy.host =\r \n \nproxy.port =\r \nproxy.user =\r \n \nproxy.pass =\r \n \nproxy.exclude =\r \n\r \n#sbproxy设置\ r \nsbproxy.address = 127.0.0.1\r \nsbproxy.port = 72\r \nsbproxy.logsize = 64\r \nsbproxy.restartOn102 = false\r \nsbproxy.pdhNoAuthentication = false\r \n\r \n#sbproxy连接池设置\ r \nsbproxy.pool.connections = 50\r \n
谢谢.
将响应从JSON字符串转换为对象并展开相关属性:
$response | ConvertFrom-Json |
Select-Object -Expand data |
Where-Object { $_.description -match 'server1' } |
Select-Object -Expand id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |