我有我的小型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控制台才会抛出此错误?