SCCM; Base Security; Или что можно потерять если нарушать рекомендации

Сколько пишут рекомендаций про недопустимость использования учётных записей (далее УЗ) доменного админа в сервисных УЗ ConfigMgr, а все равно через раз кто-то попадается на этом. Может ленятся или любимое — «знал, но забыл…», или — «да и так сойдёт…».

Видимо пространные рассуждения о рисках без демонстрации не сильно пугают, так что попробую на примерах показать, что, откуда и как можно «выловить» в ConfigMgr.

Тег «Далее»
Рубрики:SCCM, Security, Tricks

PowerShell; VS Code; snippet for SCCM;

VS Code SCCM-snippet

Сниппет по подгрузке 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"
}
Рубрики:PowerShell, SCCM, Tricks

SCCM; SQL; Checklist для переноса SQL-баз 2012 на 2017

Это не полноценный How To по переносу баз SCCM, WSUS на новый сервер, это Checklist в OneNote, с шагами и ссылками на документацию, который я обычно составляю в лабораторных условиях, чтобы в боевых он проходил быстрее и с меньшими проблемами:

OneNoteIcon Move SQL DB from 2012 to 2017.one

Happy migration

Рубрики:SCCM, SQL, SSRS

SCCM; Aprove Application via email на русском языке и Status Filter Rule

С версии SCCM 1810, появилась возможность использовать утверждение запроса приложения через e-mail. Если необходимо получать уведомление на языке отличным от Английского, можно изменить язык в подписке на Уведомления (Subscription) в мониторинг: \Monitoring\Overview\Alerts\Subscriptions.

image

Автоматизируем этот процесс, повесив Status Filter Rule на Status Message ID: 30240

Тег «Далее»

Рубрики:SCCM, Tricks

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 с повышением прав.

Почитать:

 

Рубрики:PowerShell, SCCM

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, Tricks

SCCM; SUG; RCT; & SuExt; для работы с обновлениями; Часть 3

image

Поработал 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! :)

Рубрики:RCT, SCCM

SCCM; «Community, help me please» или как получить грамотную помощь от комьюнити

Лирическое отступление

Большинство инцидентов возникающие при первоначальном знакомстве с продуктом типа ConfigMgr удается идентифицировать по общему описанию. На эту тему есть несколько мемов типа — «Это всегда DNS» или «Это всегда «Границы». Проблемы чуть сложнее потребуют уже понимания как работает система, как она настроена, что происходило до, во время и после возникновения инцидента. Эффективность и скорость решения напрямую зависит от правильной постановки вопроса, его полноты и точности. Попытаюсь набросать тезисно общие подходы при решении вопросов с ConfigMgr, на что обязательно обратить внимания и зачем.

Тег «Далее»

Рубрики:SCCM, Troubleshooting

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, Updates

SCCM; SUG; RCT; для работы с обновлениями; Часть 2

rct-for-updatesПродолжаем развивать RCT (Right Click Tools) для работы с обновлениями.

Что доступно на текущий момент

Для одиночного устройства или коллекции:

  • Получить статистику по требуемым обновлениям (“Requred”, “Installed”);
  • Создать SUG (Software Update Group) из обновлений которые требуются (required) для членов коллекции.

Для одиночного обновления: Тег «Далее»

Рубрики:RCT, SCCM, Updates