【发布时间】:2021-11-17 18:34:15
【问题描述】:
我是 powershell 新手,我有一个特定的任务,想在 powershell 中创建一个端口扫描器,允许将 foreach 循环中的参数传递给函数中的特定参数。
该函数称为 testport,在 for 循环中运行该函数时我想传递的特定参数是 $a - 这将是我有兴趣扫描的 IP 列表。函数如下:
function testport ($hostname='10.0.0.$a',$port=445,$timeout=100) {
$requestCallback = $state = $null
$client = New-Object System.Net.Sockets.TcpClient
$beginConnect = $client.BeginConnect($hostname,$port,$requestCallback,$state)
Start-Sleep -milli $timeOut
if ($client.Connected) { $open = $true } else { $open = $false }
$client.Close()
[pscustomobject]@{hostname=$hostname;port=$port;open=$open}
运行函数的 foreach 循环如下所示:
foreach ($a in 1..255) {testport}
运行时,它会多次运行 10.0.0.$a,而不是 10.0.0.1、10.0.0.2 等。 我怎样才能使它正常运行?
【问题讨论】:
-
你在这里做的有点反模式,但你可以通过在参数列表中将
'10.0.0.$a'更改为$("10.0.0.$a")来使其工作
标签: powershell parameters