Powershell Workflow – настройка ограничений


Несколько раз я обращался к вопросу использования Powershell Workflow для массового конфигурирования рабочих станций пользователей. Эта технология проста, удобна и, если знать некоторые секреты, чрезвычайно эффективна. Если вы не видели эти статьи, то рекомендую начать с Powershell 4 – Foreach –Parallel теперь еще быстрее!

Собственно я начал применять Powershell Workflow именно потому, что это позволяет распараллелить операции и многократно ускорить процесс настройки большого числа компьютеров в реальном масштабе времени (речь о тысячах компьютеров). К сожалению трудно найти практические описания, как применять Powershell Workflow наиболее эффективными путями.

Основной проблемой для меня было увеличение числа одновременно выполняемых Workflow с 30 до 100 и более. Когда соответствующий параметр появился в Foreach –Parallel, это очень помогло. Но это было частным решением, не охватывающим все варианты применения Workflow, которые я использовал. Читать далее

Powershell – выполняем скрипт еще быстрее


В прошлых статьях Powershell – параллельное выполнение операций – меняем настройки DNS и Powershell, ADMT и проверка административных шар описано как использовать параллелизм Workflow для ускорения работы скрипта.

Некоторым захочется узнать можно ли сделать ту же работу еще быстрее в рамках Powershell? Да, есть еще один интересный метод, который позволяет выполнять параллельно скрипты с максимальной скоростью.

Этот механизм Powershell называется runspaces. Я не буду ничего расписывать, потому что мне попалась статья (и прекрасный скрипт!), которая хорошо демонстрирует использование runspaces для выполнения скрипта одновременно на множестве систем Speedy Network Information Query Using PowerShell.

К этому можно еще кое-что добавить. Workflow намного проще использовать – вы это увидели, если посмотрели примеры использования Workflow и runspaces. Более того, Workflow это множество возможностей, которых нет в Powershell (помним, что Workflow это не Powershell!)

Поэтому рекомендация проста: используйте Workflow для решения администраторским задач как можно шире; если же вы столкнетесь с недостаточной скоростью Workflow и не сможете оптимизировать Workflow, то используйте runspaces для распараллеливания процессов; к тому же runspaces можно использовать в Workflow и наоборот!

Powershell, ADMT и проверка административных шар


В статье Powershell – параллельное выполнение операций – меняем настройки DNS я немного описал Workflow и как использовать это средство для выполнения параллельных операций на множестве компьютеров на примере настройки DNS.

Вот еще один пример. При миграции компьютеров с помощью ADMT важно обеспечить удаленный доступ к компьютеру с сервера миграции. Фактически используются административные шары. И ADMT имеет режим PreCheck – выполнение проверки перед запуском фактической миграции. Но запускать проверку из ADMT не совсем удобно, т.к. ошибки он покажет, но их еще надо исправить, либо исключить проблемные компьютеры из списка миграции. Поэтому лучше проверку делать заранее, исправить ошибки доступа, потом только приступать к миграции. И поможет нам в этом простой скрипт:

workflow  checkAdmShares {

 

param($computerName)

 

foreach -parallel($computer in $computerName) {

   if  (Test-Connection  -Count 2  -ErrorAction SilentlyContinue -ComputerName $computer.DNSHostName)

             { if ( Test-Path  -Path «\\$($computer.DNSHostName)\admin$» ) {«$($computer.DNSHostName) — Ok»} else {«$($computer.DNSHostName) — not path»} } else { «$($computer.DNSHostName) — not ping»}

   }

 

}

 

$comps = Get-Content C:\list.txt | % {$_.Trim()} | % { Get-ADComputer  $_ }

checkAdmShares $comps

 

За счет распараллеливания скрипт работает очень быстро даже для большого списка компьютеров.

Powershell – параллельное выполнение операций – меняем настройки DNS


В современном (назовем его так) Powershell есть потрясающе удобная вещь – Workflow, которая позволяет выполнять работу параллельно (есть и другие приятности в Workflow, но сегодня только об этой).

Читать далее