На одном из проектов потребовалось установить агента SCCM 2012 через Push Install в определенные часы. Кроме большого количества коллекций, географически распределенных площадок, требовался запуск в определенные часы с учетом разницы часовых поясов. Точнее я бы сказал не установка агента, а инициализация самого процесса Push Install. Так будет правильней звучать. )
Сам powershell скрипт. В 6-ой строке не забывайте заменить имя коллекции устройств.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import-module ($Env:SMS_ADMIN_UI_PATH.Substring(0,$Env:SMS_ADMIN_UI_PATH.Length-5) + '\ConfigurationManager.psd1') $PSD = Get-PSDrive -PSProvider CMSite CD "$($PSD):" $SiteCode = $PSD $CollectionNames = Get-CMDevice -CollectionName "Device Collection" foreach ($CollectionName in $CollectionNames) { #members in collection $ClientCheck = Get-CMDevice -Name $CollectionName.Name if ($ClientCheck.IsClient -eq $false) { Write-Host "The Client" $CollectionName.Name " without sccm agent." Install-CMClient -DeviceName $CollectionName.Name -AlwaysInstallClient:$true -Confirm:$false -IncludeDomainController:$false -SiteCode $SiteCode -ForceReinstall:$true } else { Write-Host "The Client" $CollectionName.Name " with sccm agent." } } |
Далее, чтобы не создавать в планировщике заданий все руками, запускаем еще один powershell скрипт, который создаст задание с запуском скрипта из каталога D:\PS\auto push install.ps1, будет выполнено один раз в 3PM от имени contoso\username.
Описание командлетов планировщика есть на течнете: Scheduled Tasks Cmdlets in Windows PowerShell.
1 2 3 4 5 6 7 8 9 10 11 |
$action = New-ScheduledTaskAction –Execute 'powershell.exe' -Argument '-file "D:\PS\auto push install.ps1"' $trigger = New-ScheduledTaskTrigger -Once -At 3pm $principal = New-ScheduledTaskPrincipal -UserId "contoso\username" -LogonType S4U $settings = New-ScheduledTaskSettingsSet $newtask = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger -Settings $settings Register-ScheduledTask "Install SCCM Agents" -TaskPath "microsoft" -InputObject $newtask |
ЗЫЖ Узнать, что процесс пошел можно по логу ccm.log и по растущему количеству файлов в inboxes/ccr.box и inboxes/ccrretry.box (все, что не установилось: компьютер выключен, доступ запрещен, проблемы с WMI и т.д.). Для каждого клиента там генерируется отдельный файл CCR.
ЗЫЖ2 Посмотреть список проблемных клиентов после старта всех Push Install, можно в базе SCCM:
1 2 3 4 5 6 7 |
SELECT Name,PushSiteCode,AssignedSiteCode,InitialRequestDate LatestProcessingAttempt, LastErrorCode,NumProcessAttempts From v_CP_Machine where LastErrorCode<>0 Order By LastErrorCode |
В базе видно коды ошибок. 53 говорит о «53 – Unable to locate – http://support.microsoft.com/kb/920852 – cannot connect to admin$ – Computer Browser not started – add File/print sharing to Exceptions in Firewall – turn file and print on.» (посмотреть, что за ошибка можно через net helpmsg errorvalue)
ЗЫЖ3 Если не заметили, то в скрипте удобный способ подключить модуль powershell от SCCM 2012. Не надо вспоминать, где лежит этот модуль powershell и какой код сайта.
1 2 3 |
import-module ($Env:SMS_ADMIN_UI_PATH.Substring(0,$Env:SMS_ADMIN_UI_PATH.Length-5) + '\ConfigurationManager.psd1') $PSD = Get-PSDrive -PSProvider CMSite CD "$($PSD):" |
Спасибо за статью.
Круто было бы чекать на наличие новых компьютеров без клиента, и пробовать установить на них сразу, а не когда запуститься задание, т.е. сделать некий часто запускаемый процесс.
здесь подход был другой, запустить установку в нерабочее время, т.к. в рабочие часы каналы бы точно лежали и было много других сторонних факторов.
Для понимания, было около 20 регионов с каналами 2 мегабита, внутри которых для системы было выделено всего 30% с общим кол-вом клиентов около 6 000.
после этого вы спокойно можете включить site-wide installation, когда большая часть клиентов уже прольется и не будет такой нагрузки на каналы, sccm сам будет устанавливать на новые машины клиентов через push install.
side wide installation включается в свойствах сайта.
Спасибо, я сейчас понял что side wide установка у меня не работает, хотя ручкой push работает без проблем…