новое значение для переменной powershell - PullRequest
0 голосов
/ 18 июня 2019

У меня есть программа, которая собирает информацию о компьютере и отображает некоторые данные. Но я не могу понять, как получить новое значение в моей переменной, если я хочу собрать информацию о другом компьютере. Ниже приведены некоторые из моего кода.

Переменная, содержащая значение компьютера, - DatorNamn.

Любые предложения о том, как получить новое значение в этой переменной?

[void] [System.Reflection.Assembly]::LoadWithPartialName("system.windows.form")
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null

#test av variable

$DatorNamn = [Microsoft.VisualBasic.Interaction]::InputBox('Skriv in DatorNamn', 'DatorNamn', "$env:Computername") | Write-Output

#Skriver Formen

$Form1 = New-Object System.Windows.Forms.Form
    $form1.Size = New-Object System.Drawing.Size(450,415)
    $form1.text = "Scripts Target:$DatorNamn"
    $form1.BackColor = "darkgray"
    $form1.FormBorderStyle = "FixedDialog"
    $form1.MinimizeBox = $true
    $form1.MaximizeBox = $true
    $Form1.ControlBox = $true
    $form1.Font = "Segoe UI"

        #Skriver Knapp byt DatorNamn

$KnappBdata = New-Object System.Windows.Forms.Button
    $KnappBdata.Location = New-Object System.Drawing.Size(260,152)
    $KnappBdata.Size = New-Object System.Drawing.Size(100,32)
    $KnappBdata.TextAlign = "MiddleCenter"
    $KnappBdata.ForeColor = "black"
    $KnappBdata.BackColor = "White"
    $KnappBdata.Text = "Byt Dator"
    $KnappBdata.Add_click({
    $outputBox.Text = [Microsoft.VisualBasic.Interaction]::InputBox('Skriv in DatorNamn', 'DatorNamn', "$env:COMPUTERNAME") | Write-Output


    })
    $Form1.Controls.Add($KnappBdata)

[void] $Form1.ShowDialog()
´´´

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Вам нужно использовать какой-то цикл управления, чтобы иметь возможность повторять задачу несколько раз.

Поскольку ваш метод взаимодействия включает кнопку отмены, мы можем проверить, является ли ответ от InputBox пустым, прежде чемделать задачу.В прозе это будет «пока определенное условие истинно, продолжайте повторять задачу».

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null

while ($Var = [Microsoft.VisualBasic.Interaction]::InputBox('Description', 'Title', "default")) {
    Write-Host "You typed: $Var"
}

Если вы запустите это, то он продолжит выполнять команды в фигурных скобках, пока вы ничего не введетеили нажмите кнопку отмены.

0 голосов
/ 18 июня 2019

У вас есть все, что вам нужно: событие Button должно обновлять текст GUI-объекта или переменной при каждом нажатии. Я немного подправил твой пример. попробуйте нажать кнопку и изменить текст несколько раз:

[void] [System.Reflection.Assembly]::LoadWithPartialName("system.windows.form")
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null

#test av variable

$DatorNamn = [Microsoft.VisualBasic.Interaction]::InputBox('Skriv in DatorNamn', 'DatorNamn', "$env:Computername") | Write-Output

#Skriver Formen

$Form1 = New-Object System.Windows.Forms.Form
    $form1.Size = New-Object System.Drawing.Size(450,415)
    $form1.text = "Scripts Target:$DatorNamn"
    $form1.BackColor = "darkgray"
    $form1.FormBorderStyle = "FixedDialog"
    $form1.MinimizeBox = $true
    $form1.MaximizeBox = $true
    $Form1.ControlBox = $true
    $form1.Font = "Segoe UI"

        #Skriver Knapp byt DatorNamn

$KnappBdata = New-Object System.Windows.Forms.Button
    $KnappBdata.Location = New-Object System.Drawing.Size(260,152)
    $KnappBdata.Size = New-Object System.Drawing.Size(100,32)
    $KnappBdata.TextAlign = "MiddleCenter"
    $KnappBdata.ForeColor = "black"
    $KnappBdata.BackColor = "White"
    $KnappBdata.Text = "Byt Dator"
    $KnappBdata.Add_click({
        # since you don't have $outputBox it will update the button
        $KnappBdata.Text = [Microsoft.VisualBasic.Interaction]::InputBox('Skriv in DatorNamn', 'DatorNamn', "$env:COMPUTERNAME") | Write-Output
    })
    $Form1.Controls.Add($KnappBdata)

[void] $Form1.ShowDialog()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...