为什么这个Powershell函数返回的不仅仅是true / false?

时间:2013-04-22 21:15:31

标签: powershell scripting

Function lyncNotFocused {
  # We need to check if the Lync window (conversation?) has focus or not.
  $hwnd = [WhichWindowActive]::GetForegroundWindow()
  $proc = [IntPtr]::Zero
  [WhichProcessActive]::GetWindowThreadProcessId($hwnd, [ref] $proc);
  Write-Host "DEBUG: Focused - hwnd $hwnd, process $proc"

  if (Get-Process -ID $proc -ErrorAction "SilentlyContinue" | Where { $_ -notmatch "lync" }) { return $true }
  else { return $false }
}

返回类似“12412 True”或“9867 False”的内容。从不只是普通的布尔值。这些数字对应于我正在查找的PID,似乎Get-Process cmdlet正在这里铺平道路。如何让它闭嘴?

1 个答案:

答案 0 :(得分:4)

听起来您需要在| out-null代码行上执行[WhichProcessActive]。它可能会返回PID并将其设置在参数中。

PowerShell会将所有内容发送到管道中,因此除非您将方法返回值分配给变量,或者使用[void]Out-Null将其丢弃,否则它也会被返回。