gpt4 book ai didi

Powershell Get-Service 命令输出服务代码而不是文本状态?

转载 作者:行者123 更新时间:2023-12-02 23:00:38 35 4
gpt4 key购买 nike

我有非常简单的代码来迭代 Get-Service | 的输出选择名称、显示名称、状态,然后将其格式化为 json 对象。我面临的问题是在我的 powershell 脚本之外运行该命令返回实际的文本状态(RUNNING、STOPPED 等),但在脚本中状态是数字 (1-4)。我目前运行的是 PS 版本 5.1.18362.145

脚本:

$services = Get-Service | Select Name, DisplayName, Status

$services.ForEach({
Add-Member -NotePropertyName 'table' -NotePropertyValue 'Status' -InputObject $_;
})

$payload = @{
metrics = @($services)
} | ConvertTo-Json

Write-Output ($payload)

示例输出:

                    {
"Name": "WPDBusEnum",
"DisplayName": "Portable Device Enumerator Service",
"Status": 1,
"table": "Status"
},
{
"Name": "WpnService",
"DisplayName": "Windows Push Notifications System Service",
"Status": 4,
"table": "Status"
},
{
"Name": "WpnUserService_8be1a",
"DisplayName": "Windows Push Notifications User Service_8be1a",
"Status": 4,
"table": "Status"
}

我希望 Status 保持文本而不是数字。这是 PS 5 特有的吗?

最佳答案

你可以这样做:

$services = New-Object System.Collections.ArrayList
foreach ($service in (Get-Service)){
$services.Add(@{"Name"= $service.Name; "DisplayName" = $service.DisplayName; "Status" = $service.Status.ToString()}) | Out-Null
}

$payload = @{
metrics = @($services)
} | ConvertTo-Json

Write-Output ($payload)

关于Powershell Get-Service 命令输出服务代码而不是文本状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58134502/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com