SCCM; Base Security; Или что можно потерять если нарушать рекомендации
Сколько пишут рекомендаций про недопустимость использования учётных записей (далее УЗ) доменного админа в сервисных УЗ ConfigMgr, а все равно через раз кто-то попадается на этом. Может ленятся или любимое — «знал, но забыл…», или — «да и так сойдёт…».
Видимо пространные рассуждения о рисках без демонстрации не сильно пугают, так что попробую на примерах показать, что, откуда и как можно «выловить» в ConfigMgr.
Тег «Далее»PowerShell; VS Code; snippet for SCCM;

Сниппет по подгрузке CCM-командлет в VS Code.
Нажимаем F1, вводим «User snippet», выбираем PowerShell, добавляем в открывшийся конфиг:
"Import-Module ..\ConfigurationManager.psd1": {
"prefix": "ccm",
"body": [
"Import-Module \"\\$(\\$ENV:SMS_ADMIN_UI_PATH)\\..\\ConfigurationManager.psd1\"",
"\\$SiteCode = Get-PSDrive -PSProvider CMSITE",
"Set-Location \"\\$(\\$SiteCode.Name):\\\""
],
"description": "Import-Module ..\ConfigurationManager.psd1"
}
SCCM; SQL; Checklist для переноса SQL-баз 2012 на 2017
Это не полноценный How To по переносу баз SCCM, WSUS на новый сервер, это Checklist в OneNote, с шагами и ссылками на документацию, который я обычно составляю в лабораторных условиях, чтобы в боевых он проходил быстрее и с меньшими проблемами:
Move SQL DB from 2012 to 2017.one
Happy migration
SCCM; Approve Application via email на русском языке и Status Filter Rule
С версии SCCM 1810, появилась возможность использовать утверждение запроса приложения через e-mail. Если необходимо получать уведомление на языке отличным от Английского, можно изменить язык в подписке на Уведомления (Subscription) в мониторинг: \Monitoring\Overview\Alerts\Subscriptions.
Автоматизируем этот процесс, повесив Status Filter Rule на Status Message ID: 30240
SCCM; WSUS; Third-Party Updates; Удаляем устаревший контент
Если используете обновления из каталогов обновления стороннего программного обеспечения в SUP, не забывайте подчищать устаревший и уже не используемый контент. Если вы счастливый обладатель PatchMyPC Publishing Service, то это его встроенная возможность, надо только включить ключик в реестре.
Ну а для автоматизации процесса, в скрипт из «The complete guide to Microsoft WSUS and Configuration Manager SUP maintenance«, можно добавить еще одну операцию.
$VerbosePreference = 'Continue' If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(` [Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Warning “You do not have Administrator rights to run this script!`nPlease re-run this script as an Administrator!” Break } function Get-CurrentDiskSpace ($Drive = $env:SystemDrive) { $Drive = $Drive.Substring(0, 2) $disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='$Drive'" return " - on $($disk.DeviceID)" -f (Get-Date), [uint64]($disk.FreeSpace / 1MB), [uint64]($disk.Size / 1MB) } Write-Verbose "Remove Orphaned WSUS Content:" $ContentDir = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Update Services\Server\Setup" -Name ContentDir -ErrorAction Stop).ContentDir $TargetDir = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Update Services\Server\Setup" -Name TargetDir -ErrorAction Stop).TargetDir Get-CurrentDiskSpace (Split-Path $ContentDir) | Write-Verbose $WsusUtilPath = Join-Path $TargetDir "Tools\WsusUtil.exe" if ( (Test-Path $WsusUtilPath) -and $ContentDir) { Write-Verbose "'$WsusUtilPath' found.`n Starting..." $Out = . $WsusUtilPath "listunreferencedpackagefolders" $Orphaned = $Out | Where-Object { $_.StartsWith($ContentDir) -and (Test-Path $_) } Write-Verbose "Orphaned:`n$($Orphaned | Out-String)" if ($Orphaned.Count) { Write-Verbose "Removing..." Remove-Item $Orphaned -force -recurse -ErrorAction Continue } } else { Write-Error "'$WsusUtilPath' not found" } Get-CurrentDiskSpace (Split-Path $ContentDir) | Write-Verbose
Выполнять надо на сервере WSUS с повышением прав.
Почитать:
- The complete guide to Microsoft WSUS and Configuration Manager SUP maintenance: https://support.microsoft.com/en-us/help/4490644/complete-guide-to-microsoft-wsus-and-configuration-manager-sup-maint;
- Windows Server Update Services Best Practices: https://support.microsoft.com/help/4490414/windows-server-update-services-best-practices;
- Управление обновлениями через ConfigMgr – часть 1, часть 2, часть 3
- The spDeleteUpdate stored procedure runs slowly
SCCM; Коллекция устройств с данными о приложении из Application;
Коллекция устройств с установленным приложением в которой Name, Publisher и Software version подставим из Application.
select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_INSTALLED_SOFTWARE on SMS_G_System_INSTALLED_SOFTWARE.ResourceID = SMS_R_System.ResourceId inner join SMS_ApplicationLatest on SMS_ApplicationLatest.Manufacturer = SMS_G_System_INSTALLED_SOFTWARE.Publisher and SMS_ApplicationLatest.SoftwareVersion = SMS_G_System_INSTALLED_SOFTWARE.ProductVersion and SMS_ApplicationLatest.LocalizedDisplayName = SMS_G_System_INSTALLED_SOFTWARE.ProductName where SMS_ApplicationLatest.ModelName = 'ScopeId_844C9ED5-F96B-4CEF-AD14-23ED6EF7E0F9/Application_da479ffe-9a82-4708-b9c4-50a4aa6ebeb4'
SCCM; SUG; RCT; & SuExt; для работы с обновлениями; Часть 3
Поработал ConsoleBuilder-ом и объединил два своих проекта по управлению обновлениями в CM, RCT и «SuExt» или Software Update Console Extension, как я его назвал. SuExt — то чем я больше всего пользуюсь в микроменеджменте обновлений %)
Как это выглядит в консоли можно оценить по скриншотам на GitHab-е.
Так как консоль не поддерживает аддоны как добавления к уже существующим «Нодам» и «Табам», и в каждой версии консоли xml-ки консоли разные, поддерживается только те версии консоли, билды которых есть в папке «Xml-SuExtension» (на текущий момент — 1906/1910). Если вам понадобиться под другую – пишите мне в телеграмм-чатик https://t.me/configmgr или твиттер https://twitter.com/sekorotkov.
… и не забывайте делать бэкап папки консоли.
Happy updates! :)
SCCM; «Community, help me please» или как получить грамотную помощь от комьюнити
- Лирическое отступление
- Куда обращаться
- Что написать, что приложить
- Логи или как собрать информацию о проблеме
- Как скрыть чувствительную информацию
Лирическое отступление
Большинство инцидентов возникающие при первоначальном знакомстве с продуктом типа ConfigMgr удается идентифицировать по общему описанию. На эту тему есть несколько мемов типа — «Это всегда DNS» или «Это всегда «Границы». Проблемы чуть сложнее потребуют уже понимания как работает система, как она настроена, что происходило до, во время и после возникновения инцидента. Эффективность и скорость решения напрямую зависит от правильной постановки вопроса, его полноты и точности. Попытаюсь набросать тезисно общие подходы при решении вопросов с ConfigMgr, на что обязательно обратить внимания и зачем.
SCCM; SUG; Коллекция устройств, которые “требуют” обновлений из SUG;
И так, в очередной раз формулируется задача – “Дайте устройства на которых не установлены обновления KBxxxxxxx”, например, из последнего – “CVE-2019-0708”. Мы бережно собираем SUG (По-моему, надо добавить в мой RCT функцию создание SUG по CVE#, с портала https://portal.msrc.microsoft.com), видим всякие статусы, и точно прикидываем, что отчёты нам уже пригодятся в ближайшее время (а отчёты по обновлениям в SCCM хороши). Но можно просто создать коллекцию устройств, которые хотят (Required) поставить обновления. Коллекция по обновлениям из SUG:
SELECT SMS_R_SYSTEM.ResourceID, SMS_R_SYSTEM.ResourceType, SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier, SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client FROM SMS_R_System JOIN SMS_UpdateComplianceStatus ON SMS_R_System.ResourceID = SMS_UpdateComplianceStatus.MachineID AND SMS_UpdateComplianceStatus.Status = 2 JOIN SMS_CIRelation ON SMS_CIRelation.FromCIID = 18779769 AND SMS_UpdateComplianceStatus.CI_ID=SMS_CIRelation.ToCIID AND SMS_CIRelation.RelationType=1
где “18779769” — CI_ID SUG, в консоли это называется “Сonfig Item ID”:
SCCM; SUG; RCT; для работы с обновлениями; Часть 2
Продолжаем развивать RCT (Right Click Tools) для работы с обновлениями.
Что доступно на текущий момент
Для одиночного устройства или коллекции:
- Получить статистику по требуемым обновлениям (“Requred”, “Installed”);
- Создать SUG (Software Update Group) из обновлений которые требуются (required) для членов коллекции.
Для одиночного обновления: Тег «Далее»
Недавние комментарии