Powershell: невозможно связать параметр PercentComplete.Не удалось преобразовать значение «GetPercent» в тип «System.Int32» - PullRequest
0 голосов
/ 26 октября 2018

Я новичок в PowerShell и пытаюсь написать процесс выполнения.

Сначала я создал функцию:

function GetPercent($current, $total) {
    return ($current/$total) * 100
}

, а затем написал

[Int32]$steps = 10

Write-Progress -Activity "Compile BLABLA project" -Status "Compiling and deploying BLABLA" -PercentComplete GetPercent(1, $steps)

и я получил ошибку:

Ход выполнения записи: Невозможно связать параметр 'PercentComplete'.Не удается преобразовать значение «GetPercent» в тип «System.Int32».Ошибка: «Входная строка была в неправильном формате.»

Я пытался

function GetPercent($current, $total) {
    return ($current/$total) * 100 -as [Int32]
}

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Просто заключите последний параметр в скобки: -PercentComplete (GetPercent 1, $steps)

Есть несколько хороших руководств по добавлению индикатора выполнения в ваши скрипты PoSh, например, https://blogs.technet.microsoft.com/heyscriptingguy/2011/01/29/add-a-progress-bar-to-your-powershell-script/

$files = Get-ChildItem -Path c:\
For($i = 1; $i -le $files.count; $i++)
{ Write-Progress -Activity "Collecting files" -status "Finding file $i" `
-percentComplete ($i / $files.count*100)}
$files | Select name

или https://www.credera.com/blog/technology-insights/perfect-progress-bars-for-powershell/

0 голосов
/ 26 октября 2018

В PowerShell вызовы функций разделяются пробелом, а не запятыми. Измените свой код на

Write-Progress -Activity "Compile BLABLA project" -Status "Compiling and deploying BLABLA" -PercentComplete (GetPercent 1 $steps)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...