哈希条目有时是$ NULL(错误),有时不是?

时间:2014-07-11 19:35:18

标签: powershell hash

我有我的小型3面套接字服务器。每个服务器都有自己的哈希值及其键值。

首先是:

$Local = @{ID="Local"; ...}
$RemtA = @{ID="RemtA"; ...}
$RemtB = @{ID="RemtB"; ...}

我为所有听众开始 - 没问题。

如果现在客户想要连接,我想将ID添加到$ProgressHead,其定义如下:

$ProgressHead = "Value-Broadcast, Connected:  "

并在我的函数中用于接受一个名为$ h的客户端调用

if ( !$h.Connected ) {
  #Write-Host "$($h.ID) not connected, pending: $($h.listener.Pending())"
  if ( $h.listener.Pending()) {
    $h.client = $h.listener.AcceptTcpClient() # will block here until connection
    $h.stream = $h.client.GetStream();
    $h.writer = New-Object System.IO.StreamWriter $h.stream
    $h.writer.AutoFlush = $true
    $h.Connected = $true  
    Write-Host $Global:ProgressHead # fails - empty ??
    Write-Host $h.ID  # prints oh depit it is marked as error
    if ( !$Global:ProgressHead.Contains( $h.ID ) ) { # <= HERE IS THE ERROR ????
      $Global:ProgressHead= "$($Global:ProgressHead)$($h.ID)  "
    }
  }
}

错误消息显示:

  

无法为表达式调用NULL方法并且$ h.ID带下划线

但是,如果我在运行powershell -file ThreeServer.ps1时在cmd-console中启动此操作,或者在调试模式下在ISE中启动此操作,则不会出现任何错误。该ID已正确写入$ProgressHead

只有我在Powershell控制台(PS C:\...> ./ThreeServer.ps1)启动时才会出现此错误,但上述行中的所有其他键仅在$h.ID上有效,只有PS控制台才会抛出此错误?

0 个答案:

没有答案