Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


Сообщения: 232
Благодарности: 21

Профиль | Отправить PM | Цитировать


Цитата Busla:
описанные вами задачи не выглядят сколько-нибудь тяжеловесными, чтобы хотя бы успеть заметить/увидеть прогресс-бар »
Задачи с текстовым содержимым плейлистов таки да, выполняются достаточно быстро. Но, к примеру, та же проверка потоков на работоспособность или какой-нить сканер занимают по времени 30-40 мин. и поболее. Всё зависит от объёмности плейлиста, как ниже правильно заметили.
Но вопрос то даже не в том, можно заметить движение прогресс бара или нет. Если в скрипте есть циклы, то можно прогресс бар добавить, но опять таки он будет работать не всё время выполнения скрипта... Да и для каждого скрипта нужно свой прогресс бар мудрить.
Поэтому и подумал о секундомере, чтобы с него как-то брать данные для прогресс бара и это было бы универсальным решением для любого скрипта.
Цитата YuS_2:
Чтобы сказать о том, что возможно, а что нет, необходимо таки увидеть скрипт... »
YuS_2, да скрипты то разные, соответственно и решения с прогресс баром будут разными... Хотелось бы что-то универсальное.
Есть такой скрипт:
Код: Выделить весь код
Add-Type -AssemblyName PresentationCore,PresentationFramework
[xml]$xaml = @"
<Window Name="main"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="250.456" Width="223.212">
    <Grid Margin="0,0,2,0">
        <Label HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1.028,-1.353" Width="186" Height="38">
            <Grid Height="38" Margin="0,0,0,0" Width="176">
                <TextBlock HorizontalAlignment="Left"  TextWrapping="Wrap" Text="Запуск скрипта" VerticalAlignment="Top" Height="28" Width="97" FontSize="18" FontFamily="Segoe Script" Margin="10,0,0,0"/>
                <TextBlock Name="Count" Text="" HorizontalAlignment="Right"  TextWrapping="Wrap" VerticalAlignment="Top" Height="28" Width="48" FontSize="18" FontFamily="Segoe Script"/>
            </Grid>
        </Label>
        <Button Name="inc" Content="Запустить скрипт"  HorizontalAlignment="Left" Margin="10,53,0,0" VerticalAlignment="Top" Width="180" Height="45">          
        </Button>
        <ProgressBar Minimum="0" Maximum="100" Margin="10,93,0,0" HorizontalAlignment="Left" Width="180" Height="45" Name="pbStatus" />
    </Grid> 
</Window>
"@
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$Window=[Windows.Markup.XamlReader]::Load( $reader )
$xaml.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | %{
    Set-Variable -Name ($_.Name) -Value $Window.FindName($_.Name) -Scope Global
}
$inc.add_click({
    $pbStatus.isIndeterminate=$true
    $runspace = [runspacefactory]::CreateRunspace()
    $runspace.Open()
    $runspace.SessionStateProxy.SetVariable('pbStatus',$pbStatus)
    $powershell = [powershell]::Create()
    $powershell.Runspace = $runspace
    $powershell.AddScript({

Здесь любой скрипт

        $pbStatus.Dispatcher.invoke([action]{$pbStatus.isIndeterminate=$false})
        $pbStatus.Dispatcher.invoke([action]{$pbStatus.value=100})
    })
    $powershell.BeginInvoke()
})
$Window.showdialog()
Прошу прощения, что не указываю автора, просто не помню где нашел этот код.
Работает с любым скриптом... Но неудобно с него запускать скрипты, лишнее окно и т.д. Да и сам прогресс бар просто движется непрерывно.

Отправлено: 19:36, 31-10-2020 | #9