中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PowerShell 多線程測試IP端口

發布時間:2020-10-12 21:45:18 來源:網絡 閱讀:6453 作者:beanxyz 欄目:開發技術

最近在學Python的爬蟲,昨天試著用多線程去使用不同的代理IP,基本原理是把所有的IP地址都放入一個隊列,然后使用多線程地去讀取隊列里面的值。

今天突然想到,類似的方式在PowerShell里面能不能實現呢?PowerShell自己沒有直接可以使用的隊列模塊,不過可以調用.Net里面的類來實現。

下面是一個簡單的例子


$queue = [System.Collections.Queue]::Synchronized( (New-Object System.Collections.Queue) )

$lines=gc C:\temp\thebigproxylist-17-12-20.txt

foreach($line in $lines){
    $queue.enqueue($line)
}

write-host $queue.count

$Throttle = 5 #threads

#腳本塊,對指定的IP測試端口,結果保存在一個對象里面

$ScriptBlock = {
   Param (
      [string]$value
   )

   $ip=$value.Split(":")[0]
   $port=$value.Split(":")[1]
   $a=test-netconnection -ComputerName $ip -Port $port

   $RunResult = New-Object PSObject -Property @{

      ComputerName=$ip
      Port=$port
      TCP=$a.TCPTestSucceeded

   }
   Return $RunResult
}

#創建一個資源池,指定多少個runspace可以同時執行

$RunspacePool = [RunspaceFactory]::CreateRunspacePool(1, $Throttle)
$RunspacePool.Open()
$Jobs = @()

for($i=1;$i -lt 20;$i++){
    $currentvalue=$queue.Dequeue()
    Write-Host $currentvalue
    $Job = [powershell]::Create().AddScript($ScriptBlock).addargument($currentvalue)
    $Job.RunspacePool = $RunspacePool
    $Jobs += New-Object PSObject -Property @{
      Server = $currentvalue
      Pipe = $Job
      Result = $Job.BeginInvoke()
   }

}

 #循環輸出等待的信息.... 直到所有的job都完成 

Write-Host "Waiting.." -NoNewline
Do {
   Write-Host "." -NoNewline
   Start-Sleep -Seconds 1
} While ( $Jobs.Result.IsCompleted -contains $false)
Write-Host "All jobs completed!"

#輸出結果 
$Results = @()
ForEach ($Job in $Jobs)
{   $Results += $Job.Pipe.EndInvoke($Job.Result)
}

$Results

結果如下

Waiting................................................................................All jobs completed!

Port ComputerName TCP


80 137.74.168.174 True
8080 103.28.161.68 True
53281 91.151.106.127 False
3128 177.136.252.7 True
80 47.89.22.200 True
8888 118.69.61.57 True
8080 192.241.190.167 True
80 185.124.112.130 True
3128 83.65.246.181 True
3128 79.137.42.124 True
8080 95.0.217.32 False
8080 104.131.94.221 True
65301 177.234.7.66 True
8080 37.57.179.2 False
8080 197.211.27.234 True
8080 139.59.117.11 True
8080 168.0.158.53 False
8080 154.48.196.1 True
8080 139.59.125.53 True

成功!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武山县| 达日县| 孝昌县| 青龙| 青铜峡市| 桃源县| 绍兴县| 石渠县| 怀宁县| 项城市| 鲁甸县| 白沙| 康平县| 焉耆| 额敏县| 江源县| 庆元县| 浙江省| 丽水市| 五河县| 融水| 甘孜| 九龙县| 望城县| 杭州市| 赤峰市| 天台县| 裕民县| 麻城市| 徐水县| 来宾市| 荣成市| 新平| 沈阳市| 鹿泉市| 平顶山市| 山西省| 德化县| 布尔津县| 双峰县| 玉屏|