Скрипт Powershell - разрыв цикла - PullRequest
0 голосов
/ 16 апреля 2020

Предоставление этого небольшого скрипта в powershell:

$index = 1
$file = "C:\Users\myfile"

while ($index -le 100000)
{
    $init_size = Write-Host((Get-Item $file).length/1KB)
    <here is my command which populates $file>
    $final_size = Write-Host((Get-Item $file).length/1KB)
    $index ++
    sleep 5
    If ($final_size -eq $init_size) {break}
}

Я не понимаю, почему он ломается, даже если init_size отличается от final_size.

Есть предложения?

1 Ответ

2 голосов
/ 16 апреля 2020

Write-Host пишет напрямую в экранный буфер и ничего не выводит, поэтому значения $init_size и $final_size фактически равны $null при достижении оператора if.

Выполните Write-Host $variable после присвоения $variable, и оно будет работать:

$index = 1
$file = "C:\Users\myfile"

while ($index -le 100000) {
    $init_size = (Get-Item $file).Length / 1KB
    Write-Host $init_size

    <here is my command which populates $file>

    $final_size = (Get-Item $file).Length / 1KB
    Write-Host $final_size

    $index++

    sleep 5

    If ($final_size -eq $init_size) { break }

}

Вызов Write-Host для результатов самого выражения присваивания также будет работать:

Write-Host ($init_size = (Get-Item $file).Length / 1KB)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...