none
Powershell > System.Windows.Forms.Form и show RRS feed

  • Вопрос

  • Доброго времени суток. Подскажите пожалуйста, есть текстовая форма ($objTextBox1) в которой выводятся результаты команд ($button_Click и $button_Click2). Данные в переменный $button_Click и $button_Click2 обновляется периодический, по этому есть цикл, где отрывается форма с результатами данных в переменных, а позже окна закрывается (при изменении определенных параметров) через show(). Данный способ неудобен как минимум по двум причинам: 1) Данные в форме заменяются новыми и не видно прошлые результаты. 2) Сама форма появляется в состоянии как будто "не отвечает", её нельзя не переместить, ни прокрутить скролл, ничего.  Проблема следующая: Можно ли как-то обновлять данные в $objTextBox1 без закрытия и нового открытия формы? Или же можно Переделать это все так, чтобы результаты дописывались и форма была "не зависшей"? И дополнительный вопрос: как сделать в $objTextBox1 размер скажем 600*400, но если данные не вмещаются, то autosize?

    Прикрепляю кусок кода:

    $VarKB = Get-Date -Format d

    $LogWing = New-Object System.Windows.Forms.Form 
    $LogWing.TopMost = $true
    $LogWing.Text ='Логи:'
    $LogWing.Width = 600
    $LogWing.Height = 400
    $LogWing.AutoSize = $true

    $Label2 = New-Object System.Windows.Forms.Label
    $Label2.Text = "Список обновлений."
    $Label2.Location  = New-Object System.Drawing.Point(15,10)
    $Label2.AutoSize = $true
    $LogWing.Controls.Add($Label2)


    $button_Click = get-wmiobject win32_process | where{$_.ProcessName -eq "TiWorker.exe"} | Select Name, CommandLine | Format-List | Out-String
    $button_Click2 = Get-HotFix | ? installedon -gt $VarKB | Select HotFixID, Description, InstalledOn | Format-List | Out-String
    $objTextBox1 = New-Object System.Windows.Forms.TextBox 
    $objTextBox1.Multiline = $True;
    $objTextBox1.Location = New-Object System.Drawing.Size(150,50) 
    #$objTextBox1.Size = New-Object System.Drawing.Size(900,700)
    $objTextBox1.Size = New-Object System.Drawing.Size(1200,1000)
    $objTextBox1.Scrollbars = "Both"  #Scrollbars.Vertical
    $objTextBox1.Text = $button_Click2 , $button_Click
    $LogWing.Controls.Add($objTextBox1) 

    $LogWing.Show();
    sleep 5
    $LogWing.Close();

    8 февраля 2020 г. 16:37