none
Многопоточный режим RRS feed

  • Вопрос

  • $hostFile = "hosts.txt"
    $OnlineFile = "online.txt"
    $OfflineFile = "offline.txt"
    
    
    # Create files
    New-Item -ItemType File $OnlineFile -Force
    New-Item -ItemType File $OfflineFile -Force
    
    # ping hosts
    $colComputers = get-content $hostFile
    
    foreach ($strComputer in $colComputers) {
      $ping = new-object System.Net.NetworkInformation.Ping
      $Reply = $ping.send($strComputer)
      if ($Reply.status –eq "Success") {
          Add-Content $OnlineFile $strComputer
      } else {
        Add-Content $OfflineFile $strComputer
      }
    $Reply = ""
    }
    
    $hosts = Get-Content "online.txt" 
    $hosts | foreach {
    if ((Get-Process 1cv7s -ComputerName $_).name -eq "1cv7s")
    {Write-Host -ForegroundColor Yellow $_}
    }
    


    этот скрипт ищет запущенный процесс 1С предварительно проверяя доступность ПК. Но если ПК достаточно много, то скрипт отрабатывает долго. Необходимо переделать что бы он работал в многопоточном режиме. Т.е. например проверля доступность в 5 потоков и затем также в 5 потокв проверял запущен ли процесс на доступных ПК.

    Знаю, что нужно задействовать start-job и receive-job но вот как?

    21 октября 2011 г. 12:51

Ответы

  • .\ThreadPing.ps1 -Address (gc $hostfile) -threads 5 | where {$_.status -eq "success"} | Foreach {
    			if ((Get-Process 1cv7s -ComputerName $_.Address).name -eq "1cv7s")
    			{Write-Host -ForegroundColor Yellow $_.Address}
    		}


    • Изменено KazunEditor 21 октября 2011 г. 15:52
    • Помечено в качестве ответа Max441 21 октября 2011 г. 21:21
    21 октября 2011 г. 15:50
    Отвечающий

Все ответы