0

我在Windows中有2个计划任务:StartAppPool和StopAppPool。带有换行符的Powershell格式表在列之间增加了额外的空间

在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             

任何人都有一个想法,我可以解决这个问题吗?

回答

0

尝试使用修剪方法,像这样:

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

您也可以尝试添加-AutoSize开关格式表 cmdlet的

+0

它似乎不工作。如果你可以在你身边试试这个空间,你看到空间被修剪了吗? –

+0

@louisxie,抱歉,但我没有看到任何额外的间距。为什么你实际使用高级格式?该物业似乎是一样的。您可以尝试使用额外的宽度格式。像这样@ {Label ='StartBoundary'; Expression = {$ _。StartBoundary}; Width = 10; Align ='Center'}或者基本上只添加-AutoSize开关。 –