我正在为我的公司编写一个 Powershell 脚本,它可以让我们快速查看某些离线设备。我对 Powershell 还是很陌生,一直在自学如何创建脚本和使用 API 来收集信息。我从 REST api 获取这些数据。我可以过滤掉离线设备,但无法清理显示这些设备。它目前的类似情况:
PS C:\> $Status
@{*Information*}
@{*Information*}
@{*Information*}
@{*Information*}....etc.
这些哈希表内部有名称、状态等内容,并且都具有相同类型的信息。
我想知道是否有办法将所有这些数据提取到一个表中(例如当你运行 Format-Table 时)。我已经看了好几个小时的文档,并尝试过 $Status.name 或 $Status.status、Select-Object 等。
请让我知道是否有说明如何执行此操作的文档,以便我可以将其保存以供将来使用,另一篇有答案的帖子,或者我没有提供足够的信息。
谢谢你。
编辑:完整脚本的示例和我得到的输出:
[Net.ServicePointManager]::SecurityProtocol =
[Net.SecurityProtocolType]::Tls12
$api_key = '*LONGKEY*'
$api = @{
"endpoint" = 'https://url.com'
}
$header = @{
"For-API-KEY" = $api_key
"Content-Type" = 'application/json'
}
$api.url = 'url/deviceStatuses/'
$uri = $api.endpoint + $api.url
$Networks = Invoke-RestMethod -Method GET -Uri $uri -Headers $header
$Status = $Networks | Select-String -Pattern 'offline'
$Status
输出:
PS C:\> $Status
@{*Information*}
@{*Information*}
@{*Information*}
@{*Information*}....etc.
这个脚本确实为我提供了我需要的所有信息,只是很难全部阅读。
此外,以下信息存储在 $Networks 中(信息显示在线和离线),我可以从中提取“离线”状态:
name :
serial :
mac :
publicIp :
networkId :
status : online
lastReportedAt :
usingCellularFailover :
wan1Ip :
wan2Ip :