Вывод функции PowerShell Winforms в текстовое поле - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужна помощь с графическим интерфейсом PowerShell, который я создаю.У меня есть функция, которая опрашивает пропускную способность удаленного компьютера.Я пытаюсь выяснить, как получить его для вывода в текстовое поле.То, что я сейчас получаю, просто запустив эту функцию, ниже.Я бы хотел, чтобы только значение отображалось в текстовом поле

InstanceName                             value
------------                             -----
intel[r] i350 gigabit network connection 11.85

Также последняя строка в функции запускает процесс цикла (Start-Monitoring) и выполняется каждые 10 секунд.У меня есть другие функции в моем графическом интерфейсе PowerShell, и с Start-Monitoring за пределами функциональных скобок он работает неправильно.Я предполагаю, что если взять Start-Monitoring снизу и прикрепить его к текстовому полю, это исправит

Function Start-Monitoring
{
    $Username = 'domain\user'
    $Password = 'password'
    $pass = ConvertTo-SecureString -AsPlainText $Password -Force

    $SecureString = $pass
    # Uses your password securely
    $MySecureCreds = New-Object -TypeName 
    System.Management.Automation.PSCredential -ArgumentList $Username, $SecureString


        While ($true)
    {
                # Do things lots
                Invoke-command {Get-Counter -Counter "\Network Interface(intel[r] i350 gigabit network connection)\Bytes Received/sec" -sampleinterval 6 |select -exp countersamples|ft -a instancename,@{l="value";e={[math]::round($_.cookedvalue/.1MB,2)}}} -Credential $MySecureCreds -Verbose -ComputerName ipaddress

                # Add a pause so the loop doesn't run super fast and use lots of CPU 
                Start-Sleep 10
    }
}
Start-Monitoring

Это текстовое поле, которое я построил для него

#BandTextBox
#
$BandTextBox.Location = '175, 75'
$BandTextBox.Name = 'BandTextBox'
$BandTextBox.Size = '40, 20'
$BandTextBox.TabIndex = 4
$BandTextBox.Text = ''
#

Любая помощьс благодарностью!

1 Ответ

0 голосов
/ 12 декабря 2018

Сохраните результат в переменной и обновите текстовое поле.

Function Start-Monitoring
{
    $Username = 'domain\user'
    $Password = 'password'
    $pass = ConvertTo-SecureString -AsPlainText $Password -Force

    $SecureString = $pass
    # Uses your password securely
    $MySecureCreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Username, $SecureString


    While ($true) {
            # Do things lots
            Invoke-command {Get-Counter -Counter "\Network Interface(intel[r] i350 gigabit network connection)\Bytes Received/sec" -sampleinterval 6 |select -exp countersamples|ft -a instancename,@{l="value";e={[math]::round($_.cookedvalue/.1MB,2)}}} -Credential $MySecureCreds -Verbose -ComputerName ipaddress

            # Add a pause so the loop doesn't run super fast and use lots of CPU 
            Start-Sleep 10
    }
}
$Output = Start-Monitoring


$BandTextBox.Location = '175, 75'
$Ban1dTextBox.Name = 'BandTextBox'
$BandTextBox.Size = '40, 20'
$BandTextBox.TabIndex = 4
$BandTextBox.Text = $Output.Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...