Вывод массива из Powershell Workflow неправильно форматируется или экспортируется

Поэтому я написал сценарий для оптимизации и оптимизации некоторых файлов VHDX и вывода результатов. Стремясь значительно сократить время выполнения скрипта, я научил себя Workflow. Это было само по себе приключение, но я довел сценарий до момента выдачи результатов. Вызов переменной и передача ее в объект сортировки с сохраненным процентом, затем передача в объект сортировки по статусу задания, а затем передача в таблицу форматирования; код на самом деле не сортирует данные. Он просто выводит в порядке добавления в массив.

Код работал нормально, когда он не извлекал данные из рабочего процесса (вместо этого запускался последовательно через скрипт). Я предполагаю, что рабочий процесс выводит данные в виде полной таблицы в массив скриптов, а не по отдельным записям, поэтому сортировать нечего к тому времени, когда он попадает в скрипт (скрипт видит его как одну запись),

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{   
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}

$listofprof = New-Object System.Collections.ArrayList
$UPDList = Get-ChildItem $PSScriptRoot -Filter *.vhdx | select -ExpandProperty Name
$updhome = $PSScriptRoot

Workflow TestCompact {
    param(
        [string]$updhome,
        [array]$UPDList
    )
    Foreach -Parallel ($i in $UPDList) {
            $listofproftemp =
                InlineScript {
                $startsize = ("{0:N2}" -f ((Get-ChildItem "$Using:updhome\$Using:i" | select -ExpandProperty length)/1GB))
                $usersid = $Using:i -ireplace 'UVHD-|\.vhdx', ""
                $username = (Get-ADUser -Filter 'SID -like $usersid' | Select-Object -ExpandProperty Name)
                Try {
                    Optimize-VHD "$Using:updhome\$Using:i" -mode full -ErrorAction Stop
                    $jobstatus = "Completed"
                } Catch [Microsoft.HyperV.PowerShell.VirtualizationException] {
                    $jobstatus = "Failed (UPD likely in use!)"
                } Catch {
                    $jobstatus = "Failed (Something strange happened :( ....)"
                }
                    $endsize = ("{0:N2}" -f ((Get-ChildItem "$Using:updhome\$Using:i" | select -ExpandProperty length)/1GB))
                    $percentagediff = ("{0:N2}" -f ((($startsize-$endsize)/$startsize)*100))
                $temp = [PSCustomObject]@{
                    UserName = $username
                    StartSize = $startsize
                    EndSize = $endsize
                    PercentageSaved = $percentagediff
                    JobStatus = $jobstatus
                    FileName = $Using:i
                }
                $temp
            }
            $listofproftemp
    }
}

$listofprof.add((TestCompact -updhome $updhome -updlist $UPDList)) | Out-Null
$listofprof | Sort-Object PercentageSaved | Sort-Object JobStatus | Format-Table -AutoSize -GroupBy JobStatus -Property UserName, StartSize, EndSize, PercentageSaved, JobStatus, FileName 
$listofprof | Select-Object UserName, StartSize, EndSize, PercentageSaved, JobStatus, FileName | Export-Csv -Path "$updhome\$(get-date -Format yyyy-MM-dd-hhmmtt).csv"

Я все еще работаю над оптимизацией и очисткой кода, но сначала пытаюсь заставить его работать. Извините заранее, это может быть немного трудно читать.

Я ожидал получить вывод на консоль объекта; отсортированы и сгруппированы по статусу, поэтому в таблице показаны только два или три раздела. Я также должен был получить несортированный CSV данных из массива, но вместо этого получил пустой CSV со строкой с указанием "#TYPE Selected.System.Object[]" и строкой с именами столбцов. Вывод консоли выглядит следующим образом:

   JobStatus: Failed (UPD likely in use!)

UserName        StartSize EndSize PercentageSaved JobStatus                   FileName
--------        --------- ------- --------------- ---------                   --------
C**** S****     1.04      1.04    0.00            Failed (UPD likely in use!) UVHD-S-1-5-21-2318372095-3838506165-4286****09-5***.vhdx
C***** S***** 1.07      1.07    0.00            Failed (UPD likely in use!) UVHD-S-1-5-21-2318372095-3838506165-4286****09-5***.vhdx


   JobStatus: Completed

UserName          StartSize EndSize PercentageSaved JobStatus FileName
--------          --------- ------- --------------- --------- --------
A***** N**** M**** 0.50      0.50    0.00            Completed UVHD-S-1-5-21-2318372095-3838506165-4286****09-5***.vhdx


   JobStatus: Failed (UPD likely in use!)

UserName  StartSize EndSize PercentageSaved JobStatus                   FileName
--------  --------- ------- --------------- ---------                   --------
M**** K***** 1.10      1.10    0.00            Failed (UPD likely in use!) UVHD-S-1-5-21-2318372095-3838506165-4286****09-5***.vhdx


   JobStatus: Completed

UserName           StartSize EndSize PercentageSaved JobStatus FileName
--------           --------- ------- --------------- --------- --------
S******* G********** 1.82      1.82    0.00            Completed UVHD-S-1-5-21-2318372095-3838506165-4286****09-5***.vhdx

Вывод должен был выглядеть так:

   JobStatus: Completed

UserName          StartSize EndSize PercentageSaved JobStatus FileName
--------          --------- ------- --------------- --------- --------
A***** N**** M**** 0.50      0.50    0.00            Completed UVHD-S-1-5-21-2318372095-3838506165-4286****09-5***.vhdx
S******* G********** 1.82      1.82    0.00            Completed UVHD-S-1-5-21-2318372095-3838506165-4286****09-5***.vhdx


   JobStatus: Failed (UPD likely in use!)

UserName  StartSize EndSize PercentageSaved JobStatus                   FileName
--------  --------- ------- --------------- ---------                   --------
M**** K***** 1.10      1.10    0.00            Failed (UPD likely in use!) UVHD-S-1-5-21-2318372095-3838506165-4286****09-5***.vhdx
C**** S****     1.04      1.04    0.00            Failed (UPD likely in use!) UVHD-S-1-5-21-2318372095-3838506165-4286****09-5***.vhdx
C***** S***** 1.07      1.07    0.00            Failed (UPD likely in use!) UVHD-S-1-5-21-2318372095-3838506165-4286****09-5***.vhdx

0 ответов

Другие вопросы по тегам