0

我正在为我的公司编写一个 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                :
4

0 回答 0