Powershell MessageBox добавляет ненужные данные в мою переменную - PullRequest
0 голосов
/ 08 мая 2018

Рассмотрим этот код Powershell:

[System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)

Function MyFunction {
    ShowMessageBox "Hello World" "Test"
    return "Somevalue"
}

Function ShowMessageBox {
    param (
        [string] $message,
        [string] $title
    )
    [Windows.Forms.MessageBox]::Show("$message", "$title", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
    return $null
}


$variable = MyFunction
Write-Host "The value of my variable is: $variable."

Я присваиваю переменную $ variable, в зависимости от того, что возвращается функцией «MyFunction», которая является строкой «Somevalue».

Перед возвратом этой строки я показываю окно сообщения.

Затем я печатаю значение переменной $. Это должно быть «Somevalue», но вместо этого я получаю следующее:

ОК Somevalue

Откуда это дополнительное "ОК"?

1 Ответ

0 голосов
/ 08 мая 2018

В PowerShell все, что вы не назначаете или не передаете командлету, помещается в конвейер. Оператор return выходит только из функции. В вашем случае вы можете ее опустить.

Чтобы устранить проблему, перенаправьте результат метода Show на Out-Null:

[System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)

Function MyFunction {
    ShowMessageBox "Hello World" "Test"
    "Somevalue"
}

Function ShowMessageBox {
    param (
        [string] $message,
        [string] $title
    )
    [Windows.Forms.MessageBox]::Show("$message", "$title", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information) | Out-Null
}


$variable = MyFunction
Write-Host "The value of my variable is: $variable."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...