none
Поиск обновлений на компьютерах домена

    Вопрос

  • Добрый День !

    Есть скрипт для поиска обновлений на компьютерах, такого планf

    $GetPC = (Get-ADComputer -SearchBase "OU=Comp_def,DC=Domain,DC=net" -Filter {OperatingSystem -Like "*7*"}).name
    $GetPC | foreach {
    if ( !(Get-Hotfix -id KB4012212 -computername $_)) {
    add-content $_ -path Windows7-No-KB4012212.txt
    }
    }

    При не большом количестве компов в оу еще нормально отрабатывает. Хочу добавить проверку на доступность компьютера (Test-Connection например), так чтобы если ответ фальс то комп записывался сразу в файл. не могу просто сообразить как добавить в условие. Подскажите пожалуйста.

Ответы

  • $GetPC | foreach {
    	if(Test-Connection $_ -Quiet -Count 2) {
    		if ( !(Get-Hotfix -id KB4012212 -computername $_)) {
    			add-content $_ -path Windows7-No-KB4012212.txt
    		}
    	} 
    	else {
    		add-content $_ -path Windows7-No-KB4012212.txt
    	}
    }


    • Предложено в качестве ответа Vector BCOModerator 18 мая 2017 г. 8:13
    • Помечено в качестве ответа Vector BCOModerator 18 мая 2017 г. 8:13
    • Изменено KazunEditor 18 мая 2017 г. 9:20
    Отвечающий
  • Если версия PsV3+ , то элементарно при использовании workflow:

    workflow GetUpdate {
    	param(
    		[string[]]$ComputerName
    	)
    	ForEach -Parallel ($Computer in $ComputerName)
        {
    		InlineScript {
    			$pc = $using:Computer
    			if(Test-Connection $pc -Quiet -Count 2) {
    				if ( !(Get-Hotfix -id KB4012212 -ComputerName $pc)) {
    					$pc
    				}
    			} 
    			else {
    				$pc
    			}
    		}
    	}
    }
    
    $GetPC = (Get-ADComputer -SearchBase "OU=Comp_def,DC=Domain,DC=net" -Filter {OperatingSystem -Like "*7*"}).name
    GetUpdate $GetPC | Out-File Windows7-No-KB4012212.txt

    • Помечено в качестве ответа shadowf999 18 мая 2017 г. 9:23
    Отвечающий

Все ответы

  • $GetPC | foreach {
    	if(Test-Connection $_ -Quiet -Count 2) {
    		if ( !(Get-Hotfix -id KB4012212 -computername $_)) {
    			add-content $_ -path Windows7-No-KB4012212.txt
    		}
    	} 
    	else {
    		add-content $_ -path Windows7-No-KB4012212.txt
    	}
    }


    • Предложено в качестве ответа Vector BCOModerator 18 мая 2017 г. 8:13
    • Помечено в качестве ответа Vector BCOModerator 18 мая 2017 г. 8:13
    • Изменено KazunEditor 18 мая 2017 г. 9:20
    Отвечающий
  • Если у вас большое кол-во компьютеров, можете почитать про workflow для параллельного опроса
    • Изменено JabBaton 18 мая 2017 г. 8:41
  • $GetPC | foreach {
    	if(Test-Connenction $_ -Quiet -Count 2) {
    		if ( !(Get-Hotfix -id KB4012212 -computername $_)) {
    			add-content $_ -path Windows7-No-KB4012212.txt
    		}
    	} 
    	else {
    		add-content $_ -path Windows7-No-KB4012212.txt
    	}
    }


    Спасибо ! Опробую, чуть попозжа.
  • Спасибо за информацию. Да тоже думал как-нибудь распараллелить процесс через фоновые сессии  для ускорения.
  • Если версия PsV3+ , то элементарно при использовании workflow:

    workflow GetUpdate {
    	param(
    		[string[]]$ComputerName
    	)
    	ForEach -Parallel ($Computer in $ComputerName)
        {
    		InlineScript {
    			$pc = $using:Computer
    			if(Test-Connection $pc -Quiet -Count 2) {
    				if ( !(Get-Hotfix -id KB4012212 -ComputerName $pc)) {
    					$pc
    				}
    			} 
    			else {
    				$pc
    			}
    		}
    	}
    }
    
    $GetPC = (Get-ADComputer -SearchBase "OU=Comp_def,DC=Domain,DC=net" -Filter {OperatingSystem -Like "*7*"}).name
    GetUpdate $GetPC | Out-File Windows7-No-KB4012212.txt

    • Помечено в качестве ответа shadowf999 18 мая 2017 г. 9:23
    Отвечающий