Powershell MessageBox将不需要的数据添加到我的变量中

时间:2018-05-08 11:55:58

标签: powershell

考虑这个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"。

在返回此字符串之前,我会显示一个消息框。

然后我打印$ variable的值。这应该是" Somevalue",但我得到的结果是:

  

确定Somevalue

这个额外的地方"好的"来自?

1 个答案:

答案 0 :(得分:2)

在PowerShell中,您未分配或管道到cmdlet的所有内容都会被放入管道中。 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."