【问题标题】:Powershell Format-Table with new line break adds extra space between column带有新换行符的 Powershell 格式表在列之间增加了额外的空间
【发布时间】:2017-06-28 15:06:55
【问题描述】:

我在 Windows 中有 2 个计划任务:StartAppPool 和 StopAppPool。

在 StartAppPool 中,我只有 1 个作业触发器。在 StopAppPool 中,我有 2 个作业触发器。

我正在尝试创建一个脚本来显示我的计划任务和相关属性的状态。

Write-Host "9. Checking Task Scheduler Execution Status...." -BackgroundColor DarkCyan
$taskService = New-Object -ComObject "Schedule.Service"
$taskService.Connect($env:COMPUTERNAME)
$rootTaskFolder = $taskService.GetFolder('\')
$tasks = $rootTaskFolder.GetTasks(1) | Where-Object { $_.Name -in 'StopAppPool','StartAppPool' }

$TaskArray = @()
ForEach ( $task in $tasks ) {
    $object = New-Object -TypeName PSObject
    $object | Add-Member -Name 'Name' -MemberType Noteproperty -Value $task.Name
    $object | Add-Member -Name 'TaskEnabled' -MemberType Noteproperty -Value $task.Enabled
    $object | Add-Member -Name 'LastRunTime' -MemberType Noteproperty -Value $task.LastRunTime
    $object | Add-Member -Name 'NextRunTime' -MemberType Noteproperty -Value $task.NextRunTime

    $TaskXMLObject = [xml]$task.Xml
    $CalendarTriggers = $TaskXMLObject.Task.Triggers.CalendarTrigger


    $TaskTriggerArray = @()
    ForEach ($CalendarTrigger in $CalendarTriggers) {
        $object2 = New-Object -TypeName PSObject
        $object2 | Add-Member -Name 'StartBoundary' -MemberType Noteproperty -Value ( Get-Date $CalendarTrigger.StartBoundary.Replace('T',' ') -Format "dd/MM/yyyy hh:mm:ss tt" )
        $object2 | Add-Member -Name 'Enabled' -MemberType Noteproperty -Value $CalendarTrigger.Enabled
        $DaysOfWeek = ( $CalendarTrigger.ScheduleByWeek.DaysOfWeek | Get-Member -MemberType Property | Select -ExpandProperty Name) | ForEach-Object -Process { [enum]::parse([System.DayOfWeek],$_ ) } | Sort-Object #parsing the values into an enum will allow the objects to be sorted by day instead of alphabetical order           
        $object2 | Add-Member -Name 'DaysOfWeek' -MemberType Noteproperty -Value ( $DaysOfWeek -join ', ' )

        $TaskTriggerArray += $object2
    }

    $object | Add-Member -Name 'StartBoundary' -MemberType NoteProperty -Value ($TaskTriggerArray.StartBoundary | Out-String )
    $object | Add-Member -Name 'TriggerEnabled' -MemberType Noteproperty -Value ($TaskTriggerArray.Enabled | Out-String )
    $object | Add-Member -Name 'DaysOfWeek' -MemberType Noteproperty -Value ($TaskTriggerArray.DaysOfWeek | Out-String )
    $TaskArray += $object

}

$TaskArray | Format-Table Name, TaskEnabled, LastRunTime, NextRunTime, @{Label='StartBoundary';Expression={(($_.StartBoundary )}}, TriggerEnabled, DaysOfWeek -Wrap

不幸的是,“StartBoundary”列似乎在后面附加了额外的空格,我不知道如何解决这个问题。这是示例输出

Name         TaskEnabled LastRunTime          NextRunTime          StartBoundary                                    TriggerEnabled DaysOfWeek                                                
----         ----------- -----------          -----------          -------------                                    -------------- ----------                                                
StartAppPool        True 10/2/2017 6:00:00 AM 11/2/2017 6:00:00 AM 29/09/2016 06:00:00 AM                           true           Monday, Tuesday, Wednesday, Thursday, Friday, Saturday    

StopAppPool         True 10/2/2017 5:10:01 AM 11/2/2017 5:10:00 AM 29/09/2016 05:10:00 AM                           true           Tuesday, Wednesday, Thursday, Friday, Saturday            
                                                                   05/11/2016 10:00:00 AM                           true           Saturday                                                  

有人知道我该如何解决这个问题吗?

【问题讨论】:

    标签: windows powershell scheduled-tasks windows-server-2012-r2 powershell-5.0


    【解决方案1】:

    尝试使用Trim方法,像这样:

    $_.StartBoundary.ToString().Trim()
    

    您也可以尝试为Format-Table cmdlet添加-AutoSize开关

    【讨论】:

    • 它似乎不起作用。如果您可以尝试一下,您是否看到空间被修剪了?
    • @louisxie,对不起,我真的没有看到任何额外的间距。为什么您实际上使用高级格式?属性似乎是一样的。您可以尝试使用额外的宽度格式。像这样 @{Label='StartBoundary';Expression={$_.StartBoundary};Width=10;Align='Center'} 或者基本上只是添加 -AutoSize 开关。
    猜你喜欢
    • 2011-12-22
    • 1970-01-01
    • 2019-09-15
    • 2018-06-29
    • 1970-01-01
    • 2021-02-01
    • 2016-05-30
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多