Многопоточный скрипт PowerShell - PullRequest
1 голос
/ 26 февраля 2020

Я создал скрипт PowerShell, который берет данные из файла CSV, сортирует эти данные и создает новый файл CSV.

Файл размером около 50 МБ, что делает мой сценарий мучительно медленным.

Я хочу сделать мой Script Multithreading совместимым, но у меня возникли проблемы с командой блока Start-Job -Script block.

Новый файл не будет создан, если я использую эту команду.

Можете ли вы увидеть мою ошибку в сценарии?

Спасибо за вашу помощь!

    [CmdletBinding(DefaultParameterSetName='Parameter Set 1',
SupportsShouldProcess=$true,
PositionalBinding=$false,
HelpUri = 'http://www.microsoft.com/',
ConfirmImpact='Medium')]
[Alias()]
[OutputType([String])]
Param (
# Param1 Pathvariable
[Parameter(Mandatory=$false, # Change this to $false.
Position=0,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false, 
ParameterSetName='Parameter Set 1')]
$Path = 'C:\Users\xyc\Desktop\Sheduling\Aufgabe\AccountingData\AccountingList.csv',
$ExportPath = 'C:\Users\xyc\Desktop\Sheduling\Aufgabe\ExportCSV\SortedData\AccountingListSort.csv',
$MultiThread = 'Start-Job'
)



begin {
}

process { 

    $MultiThread | Start-Job -ScriptBlock {
    $ExcludedJobs = @('EndPoint',
    'RecoveryJobNetEndPoint',
    'RecoveryJobNetStartPoint',
    'StartPoint')
    $Accountdata = Get-Content -Path $Path | convertfrom-csv -Delimiter ';' 
    $FilteredData = $Accountdata | Where-Object {$ExcludedJobs -notcontains $_.Jobname} 
    $GroupData = $FilteredData | Group-Object 'AccountNo' | Select-Object @{label='Accountnummer'; expression={$_.Name}}, @{label='Anzahl Jobs'; expression={$_.Count}}
    $GroupData | Export-Csv -path $ExportPath -NoTypeInformation -Delimiter ';'
    }

}


end {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...