Powershell计划任务报告 - 将状态从数字更改为单词

时间:2017-04-21 14:45:32

标签: powershell scheduled-tasks

我有这个powershell代码,它可以获得任何没有错误代码为0并且状态为“Ready”的计划任务:

Get-ScheduledTask | Select-Object  @{Name="Task Name";Expression={$_.Path}}, LastRunTime, NextRunTime, LastTaskResult, State | Where-Object   {($_.LastTaskResult -NE '0') -AND ($_.State -LIKE '3') }

这是一个输出示例:

Task Name      : \UserScheduleTaskNet4
LastRunTime    : 21/04/2017 15:25:00
NextRunTime    : 21/04/2017 15:30:00
LastTaskResult : 267009
State          : 4

我希望状态输出为单词而不是数字 - 在这种情况下,状态'4'将输出为'Running'。

我有这段代码,但我不确定如何将其实现到我的Select-Object cmdlet中:

 New-Object -TypeName PSCustomObject -Property @{ 
                    'Name' = $_.name 
                    'Path' = $_.path 
                    'State' = switch ($_.State) { 
                        0 {'Unknown'} 
                        1 {'Disabled'} 
                        2 {'Queued'} 
                        3 {'Ready'} 
                        4 {'Running'} 
                   Default {'Unknown'} 
                    } 

2 个答案:

答案 0 :(得分:2)

Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /Library/Server/Web/Config/php
Additional .ini files parsed:      (none)

您可以使用键值对将状态指定为枚举或对象,然后从提供的字段中获取其字段。请注意,如果遇到意外的$states=@('Unknown','Disabled','Queued','Ready','Running') Get-ScheduledTask | Where-Object {($_.LastTaskResult -NE '0') -AND ($_.State -LIKE '3') } | Select-Object @{Name="Task Name";Expression={$_.Path}}, LastRunTime, NextRunTime, LastTaskResult, @{name='State';expression={$states[$_.state]}} ,则该列将具有null而不是raw状态值。在您的情况下,state可以是一个简单的基于0的数组,因为您的枚举不是空心的并且从0开始。

答案 1 :(得分:1)

有一个非常简单的解决方案(我自己也遇到了同样的问题):

转换为字符串!

"localSourceRoot": "http://127.0.0.1/(your public html folder)/"

或者这是我的版本:

 New-Object -TypeName PSCustomObject -Property @{ 
                    'Name' = $_.name 
                    'Path' = $_.path 
                    'State' = "$($_.State)" 
                    }