CM: Поддерживать неподдерживаемое

Итак, у компании появилась потребность в обслуживании рабочих станций на базе UNIX/Linux, при этом в организации уже есть развернутый SCCM, который до недавнего времени поддерживал работу с этим классом операционных систем. Поддержка остановилась на версии Current Branch 1810 и в версии 1902 такой поддержки больше нет. Тем не менее, техническая возможность есть продолжить использовать кроссплатформенные клиенты и в списках операционных систем они никуда не делись. Остаются две проблемы:

  1. В списках нет последних вышедших операционных систем
  2. Установка клиента завершается с ошибкой на неподдерживаемую версию OpenSSL

Для того, чтобы решить первую проблему необходимо  выполнить запрос в базе данных Configuration Manager, который добавит в список отсутствующие операционные системы (в моем примере Debian 9, 10 и Ubuntu 18.04):

INSERT INTO SupportedPlatforms
	(Id, OSPlatform, OSName, OSMinVersion, OSMaxVersion, DisplayText, StringId, Condition, ClientSupported, Metric, BitMask, HybridSupported)
	VALUES
	(4148, 'x86', 'Debian', '9.00.0000.0', '9.99.9999.9999', 'x86 Debian 9', 4148, '<Operator OperatorType="AND"><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_OperatingSystem WHERE Version like ''9%'' AND OSType=36 AND Caption like ''%Debian GNU/Linux 9%'']]></Expression><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_Processor WHERE Architecture=0]]></Expression></Operator>', 1, 200, 0, 0),
	(4149, 'x64', 'Debian', '9.00.0000.0', '9.99.9999.9999', 'x64 Debian 9', 4149, '<Operator OperatorType="AND"><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_OperatingSystem WHERE Version like ''9%'' AND OSType=36 AND Caption like ''%Debian GNU/Linux 9%'']]></Expression><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_Processor WHERE Architecture=9]]></Expression></Operator>', 1, 200, 0, 0),
	(4150, 'x86', 'Ubuntu', '18.04.0000.0', '18.04.9999.9999', 'x86 Ubuntu 18.04', 4150, '<Operator OperatorType="AND"><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_OperatingSystem WHERE Version like ''18.%'' AND OSType=36 AND Caption like ''%Ubuntu 18%'']]></Expression><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_Processor WHERE Architecture=0]]></Expression></Operator>', 1, 200, 0, 0),
	(4151, 'x64', 'Ubuntu', '18.04.0000.0', '18.04.9999.9999', 'x64 Ubuntu 18.04', 4151, '<Operator OperatorType="AND"><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_OperatingSystem WHERE Version like ''18.%'' AND OSType=36 AND Caption like ''%Ubuntu 18%'']]></Expression><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_Processor WHERE Architecture=9]]></Expression></Operator>', 1, 200, 0, 0),
	(4152, 'x86', 'Debian', '10.00.0000.0', '10.99.9999.9999', 'x86 Debian 10', 4152, '<Operator OperatorType="AND"><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_OperatingSystem WHERE Version like ''10%'' AND OSType=36 AND Caption like ''%Debian GNU/Linux 10%'']]></Expression><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_Processor WHERE Architecture=0]]></Expression></Operator>', 1, 200, 0, 0),
	(4153, 'x64', 'Debian', '10.00.0000.0', '10.99.9999.9999', 'x64 Debian 10', 4153, '<Operator OperatorType="AND"><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_OperatingSystem WHERE Version like ''10%'' AND OSType=36 AND Caption like ''%Debian GNU/Linux 10%'']]></Expression><Expression ExpressionType="continuous" ExpressionLanguage="WQL"><![CDATA[SELECT * FROM Win32_Processor WHERE Architecture=9]]></Expression></Operator>', 1, 200, 0, 0)

Для решения второй проблемы необходимо перейти по ссылке Open Management Infrastructure, скачать и установить последнюю версию OMI на компьютер, на который мы хотим установить агент. По ссылке Microsoft System Center Configuration Manager — Clients for Additional Operating Systems необходимо скачать и распаковать клиенты для необходимых операционных систем. В файле install необходимо заменить строку, содержащую запись

OPENSSL_SYSTEM_VERSION_100=

на

OPENSSL_SYSTEM_VERSION_100=`echo $OPENSSL_SYSTEM_VERSION_FULL | grep -Eq '^1.(0|1).'; echo $?`​

, после чего клиент уже можно установить по стандартному сценарию, описанному в документации.

Важно! При использовании данных манипуляций у вас возобновится возможность фильтровать развертывание пакетов как на уровне коллекций, так и на уровне операционной системы клиента. Вы должны отдавать себе отчет в том, что данные действия вы выполняете на свой страх и риск, все описанные действия на момент написания статьи являются неподдерживаемыми.

Реклама

CM: Cmdlet для создания иконки приложения

Наверняка, многие из тех, кто использует командлеты Configuration Manager, сталкивались с проблемой создания приложения с иконкой размером больше 250×250. При попытке добавить иконку большего размера с помощью командлета New-CMApplication или Set-CMApplication выдается сообщение:

WARNING: The maximum size of an icon is 250px X 250px.

Об этом также есть отзыв на странице UserVoice — New-CMApplication rejects icons larger than 250×250

Ниже приведен командлет, который я использую для добавления иконок большего размера

function New-CMApplicationIcon {
    [OutputType([Microsoft.ConfigurationManagement.ApplicationManagement.Icon])]
    param(
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [System.IO.FileInfo]$FileName
    )
    process {
        [System.Drawing.Image]$Bitmap = $null
        [Microsoft.ConfigurationManagement.ApplicationManagement.Icon]$Icon = $null
        try {
            if ($FileName.Exists) {
                $Bitmap = [System.Drawing.Image]::FromFile($FileName.FullName)
                if ($Bitmap.Height -gt 512 -or $Bitmap.Width -gt 512) {
                    throw "Image size is out of range"
                }
                $Icon = New-Object Microsoft.ConfigurationManagement.ApplicationManagement.Icon($Bitmap)
                return $Icon
            }
        }
        finally {
            if ($Bitmap -ne $null) {
                $Bitmap.Dispose()
                $Bitmap = $null
            }
        }
    }
}

Далее мы можем использовать этот командлет совместно с остальными командлетами Configuration Manager, например:

$ApplicationIcon = New-CMApplicationIcon `
    -File ".\Icon\512px-Yandex_Browser_logo.png"
$LanguageId = [System.Globalization.CultureInfo]::GetCultureInfo("ru-ru").LCID
$DisplayInfo = New-CMApplicationDisplayInfo `
    -LanguageId $LanguageId `
    -Title "Яндекс Браузер" `
    -Description "Быстрый и безопасный браузер с голосовым помощником Алисой."
$DisplayInfo.Icon = $ApplicationIcon
$Application = New-CMApplication `
    -Name "Yandex Browser" `
    -Publisher "Yandex" `
    -SoftwareVersion "Latest" `
    -ReleaseDate [DateTime]::Today `
    -AppCatalog $DisplayInfo `
    -DefaultLanguageId $LanguageId

 

System Center 2019

Во всех доступных подписках Microsoft (VLSC, MSDN, Evaluation) стали доступны продукты линейки System Center 2019! Пробные версии продуктов можно скачать по ссылке Evaluate System Center 2019.

OM: OMS-Agent-for-Linux

https://github.com/Microsoft/OMS-Agent-for-Linux

OM: Скрипт для сброса состояния монитора

Скрипт для сброса монитора в здоровое состояние (аналогично Reset Health в Health Explorer) по критерию:

$Server = "ServerName"
$Credentials = Get-Credential
New-SCOMManagementGroupConnection -ComputerName $Server -Credential $Credentials
$ResetAlerts = Get-SCOMAlert -Criteria "IsMonitorAlert = 1 AND Name = 'Failed to Connect to Computer' AND ResolutionState < 255"
foreach ($Alert in $ResetAlerts)
{
	$MonitoringRule = Get-SCOMMonitor -Id $Alert.MonitoringRuleId
	$MonitoringObject = Get-SCOMClassInstance -Id $Alert.MonitoringObjectId
	$MonitoringObject.ResetMonitoringState($MonitoringRule)
}

OM: Docker-Provider

https://github.com/Microsoft/Docker-Provider/releases

OM: SCXCore-kits

https://github.com/Microsoft/SCXcore-kits