Powershell Bool返回Array

时间:2013-09-20 06:57:22

标签: powershell

我尝试从函数返回$ true或$ false,然后我得到一个数组。 如果我删除listBox消息它按预期工作。有谁知道为什么?

function TestEmptyFields()
{
  $empty= $false

  $listBox1.Items.Add("Testing fields")

  if ($txtPrtName.get_text()-eq "")
  {
    $listBox1.Items.Add("Empty name")
    $empty= $true
  }
  elseif ($txtPrtIP.get_text() -eq "")
  {
    $listBox1.Items.Add("Empty Ip")
    $empty= $true
  } 
  else 
  {
    $empty= $false
  }

  $listBox1.Items.Add($txtPrtName.get_text())
  $listBox1.Items.Add($txtPrtIP.get_text())

  return $empty
}

但它的工作原理如下:

function TestEmptyFields()
{
  if($txtPrtName.get_text()-eq "")
  {
    return $true
  }
  elseif ($txtPrtIP.get_text() -eq "")
  {
    return $true
  }
  else
  {
    return $false
  }
}

1 个答案:

答案 0 :(得分:4)

在powershell return $empty功能上等同于$empty ; return - 这种行为的实施是为了让具有C风格语言背景的人更容易,但实际上你的回报超过了您认为!列表框也会返回内容。事实上,任何未分配给变量或其输出无效的内容都将到达输出流。要解决此问题,请尝试将列表框强制转换为[void],如下所示:

[void] $listBox1.Items.Add("Testing fields")

在表单的上下文中正确使用Listbox,查看TechNet guide可能不会有什么坏处。