PowerShell ISE vs Script

时间:2015-08-11 09:38:50

标签: windows powershell

我在玩PowerShell这个想法很简单:

我想验证某个TCP端口是否已打开。

现在,我可以将其作为PowerShell脚本运行,或者我可以在ISE中运行它。

现在,在ISE中一切都很好,脚本按原样运行。

当我以PowerShell脚本运行它时,我收到错误消息:

方法调用失败,因为[System.Net.Sockets.TcpClient]不包含名为“ReceiveTimeout”的方法。 在P:\ checkTCP80.ps1:7 char:1 + $ tcpClient.ReceiveTimeout(5) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~     + CategoryInfo:InvalidOperation:(:) [],RuntimeException     + FullyQualifiedErrorId:MethodNotFound

代码:

$servery = gc .\servers.txt

foreach ($server in $servery) 
{
$tcpClient = New-Object System.Net.Sockets.TCPClient
$tcpClient.ReceiveTimeout(5)
$tcpClient.Connect($server,80)
Write-Host ($server, $tcpClient.Connected)
}

我有两个问题:

  1. 为什么输出参数在ISE中工作得很好但是当它作为脚本启动时不起作用?
  2. 如何解决?

1 个答案:

答案 0 :(得分:1)

根据关于此类的{MS}文档,ReceiveTimeout是属性而不是方法。

尝试将$tcpClient.ReceiveTimeout(5)更改为$tcpClient.ReceiveTimeout = 5