Jeder, der heutzutage SCCM im Einsatz hat, kennt den zyklischen Aktualisierungsumstand. Microsoft hat das Update Intervall deutlich erhöht und unterstützt in diesem Zusammenhang nicht mehr alle Vorgängerversionen.
In vielen Unternehmen stellt sich die Frage, wie mit solchen Updates zu verfahren ist. Der SCCM bietet für einen einfachen Aktualisierungsablauf den Online Modus des Service Connection Points an. Updates und Hotfixes werden direkt bei Microsoft heruntergeladen und in der Konsole des SCCM anschließend zur Installation bereitgestellt.
Eine weitere Möglichkeit stellt der Offline Modus dar; mit diesem müssen die Updates manuell bei Microsoft heruntergeladen und bereitgestellt werden.
Der automatisierte Prozess zum Herunterladen von SCCM Updates stellt Unternehmen vor die Herausforderung den SCCM direkt mit dem Internet verknüpfen zu müssen, das automatisierte Herunterladen von Updates kann sonst nicht genutzt werden. Eine aktive Internetverbindung eines Serversystems birgt potenzielle Sicherheitsrisiken und sollte nur in speziellen Ausnahmesituationen zugelassen werden.
Trotz Offline Modus können Updates auf dem SCCM integriert werden. Ist die Rolle Service Connection Point nicht installiert, was standardmäßig der Fall ist, muss diese vorab hinzugefügt werden. Dazu muss im SCCM nach Administration > Site Configuration > Server and Site System Roles gewechselt werden. Anschließend wird der entsprechende Server ausgewählt und mittels Add Site System Roles der Wizard zum Hinzufügen der Rolle aufgerufen.
Anschließend wählt man im Menüpunkt System Role Selection die Rolle Service Connection Point aus.
Nach dem erfolgreichen Hinzufügen der Rolle kann der Modus für den Service Connection Point konfiguriert werden.
Der Modus kann über den Menüpunkt Administration > Site Configuration > Server and Site System Roles geändert werden. Im Anschluss öffnet sich ein Fenster, indem der SCCM ausgewählt wird und im unteren Bereich mittels rechter Maustaste die Eigenschaften des Service Connection Points aufgerufen werden (siehe Abbildung oben). Abschließend bestätigt man die Änderung mit OK.
Der manuelle Prozess des Offline Updates ergibt sich wie folgt:
Alle drei Schritte werden mittels des Service Connection Tools ausgeführt. Es müssen lediglich die Parameter entsprechend definiert werden. Das Service Connection Tool ist in den Installationsmedien des SCCM im Ordner SMSSETUP\TOOLS\ServiceConnectionTool zu finden.
Nachdem alle drei Schritte erfolgreich ausgeführt worden sind ist der SCCM Administrator in der Lage, die Updates direkt über die Configuration Manager Konsole zu installieren.
Damit der ganze Prozess nicht zyklisch manuell durchgeführt werden muss, wurde der Prozess von der RISC automatisiert (natürlich mit PowerShell):
Die folgenden grundlegenden Rahmenbedingungen sind zu beachten:
Nachfolgend sind die unterschiedlichen Schritte des Offline Updates im Detail aufgeführt und erklärt.
Der erste Schritt umfasst die Abfrage der Telemetrie Daten am SCCM. Das erforderliche Skript wird vom Remote Computer mit einem Internetzugang (Client) ausgeführt. Für eine erfolgreiche Verbindung zum SCCM sind der Domain Name, Site Code und der Site Server Name erforderlich.
Auf dem Client ist, aufgrund der fehlenden SCCM Installation , das Modul ConfigurationManager nicht verfügbar. Für eine erfolgreiche Verbindung vom Client zum SCCM Server ist dieses Modul zwingend erforderlich. Es handelt sich dabei um ein PowerShell Modul, welches vorab importiert werden muss. Hierfür muss die ConfigurationManager.psd1 in PowerShell geladen werden. Anschließend wird sichergestellt, dass der Service Connection Point des SCCM im Offline Modus operiert. Sollte dies nicht der Fall sein, muss der Modus in den Status Offline geändert werden.
Sind die Vorbereitungen abgeschlossen startet das Skript mit Hilfe der ServiceConnectionTool.exe den Export der SCCM Telemetrie Daten. Diese müssen im ersten Schritt lokal auf dem SCCM abgelegt werden. Die Ablage auf dem SCCM erfolgt in einen Netzwerk Share, auf diese Weise hat der Client Zugriff auf die SCCM Telemetrie Daten. Schlussendlich werden diese in Form einer CAB Datei vom SCCM Netzwerk Share auf den Client kopiert.
Nachfolgend ist das Skript bei der Ausführung zu sehen. Zu Beginn wird das notwendige ConfigurationManager Modul für PowerShell geladen. Anschließend werden die entsprechenden Code Zeilen ausgeführt.
Die auf dem Client jetzt verfügbaren Telemetrie Daten (C:\TEMP\OfflineUpdateSCCM\USB) des SCCM werden im zweiten Schritt an Microsoft übermittelt. Für diesen Schritt ist sowohl die Angabe der Parameter für die Ablage der CAB Datei erforderlich als auch die Nennung des Downloadpfads für die von Microsoft übermittelten Updates. Dieser Schritt wird mittels des Service Connection Tool ausgeführt. Die CAB Datei enthält alle notwendigen Informationen zur Version und anderer Einstellungen aus SCCM.
Nachfolgend ist das ausführende Skript zu sehen. Der Connect erhält von Microsoft eine ID und die Handles werden in Summe aufgeführt:
Es kann einige Zeit dauern bis der Prozess abgeschlossen ist. Im Anschluss kann der Ordner UpdatePacks wie folgt aussehen:
Durch den Import der von Microsoft heruntergeladenen Updates werden diese für den Configuration Manager verfügbar gemacht. In diesem Skript sind, entsprechend dem ersten Skript, die notwendigen Informationen für eine erfolgreiche Verbindung zum SCCM anzugeben. Die Parameter lauten Site Code, Domain Name, Site Server Name. Der Netzwerk Share wird in diesem Schritt als Kommunikationskanal zur Übermittlung der Updates vom Client an den SCCM genutzt. Der Import der SCCM Updates kann entsprechend dem Export der Telemetrie Daten wieder nur lokal auf dem SCCM erfolgen.
Den Aufruf des Service Connection Tools übernimmt der Client erneut als Remote-Aufruf. In diesem Schritt werden alle von Microsoft erhaltenen Updates in den SCCM importiert. Dies kann durchaus eine Stunde in Anspruch nehmen.
Nachfolgend ist der letzte erforderliche Schritt des Offline Updates im Skript Modus dargestellt.
Nach dem erfolgreichen Import der Updates in den SCCM kann es noch einige Zeit dauern, bis diese Updates unter Administration > Cloud Settings ausgewiesen werden. Anschließend können die Updates entsprechend der von Microsoft spezifizierten Reihenfolge installiert werden..
Nachfolgend ist der Skript Code für das übergeordnete Master Skript zu finden. Dieses steuert die entsprechenden Skripte. Wählbar ist zwischen alle Skripte ohne Nachfrage nacheinander ausführen oder vor der Ausführung eines jeden Skripts wird explizit für eine Ausführung gefragt.
<#
.SYNOPSIS
This is the Master Script for the System Center Configuration Manager Offline Update
.DESCRIPTION
This scripts to perform all tasks in a row or each step after request
.PARAMETER
.NOTES
.LINK
http://www.RISConsulting.de
.AUTHOR
Martin Schmittbetz
.Date
2017-05-17
#>
#region Elevate
$StartDate=Get-Date
Write-Output "RISC SCCM Offline Update - Switch Connect: $StartDate"
Write-Output "Checking for elevation... "
$CurrentUser = New-Object Security.Principal.WindowsPrincipal $([Securi-ty.Principal.WindowsIdentity]::GetCurrent())
if (($Curren-tUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) -eq $false) {
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Write-Output "Starting new process with administration rights"
Start-Process powershell -Verb RunAs -ArgumentList $arguments
Exit
} else {
Write-Output "administration rights already existing"
}
#endregion
# Check the local server for it´s executionpolicy
$policy = get-executionpolicy;
if($policy -eq "Restricted"){
Write-Host -ForegroundColor Red “Your executionpolicy is set to Restricted. Be sure to allow the execution of scripts (set-executionpolicy unrestricted)”;
} else {
Write-Host -ForegroundColor Green “Your executionpolicy is set to $policy. Everything is fine. Go on...";
}
# Options
Write-Host “PRESS - 1 - if you want to execute all steps in a row" -ForegroundColor Green
Write-Host “PRESS - 2 - if you want a request before executing a task" -ForegroundColor Green
$a = Read-Host "Please choose"
# Let´s get it started
switch ($a){
1 {
Write-Host "*****************************************************************************" -ForegroundColor Gray
Write-Host "Getting Telemetry Data from SCCM" -ForegroundColor Cyan
.\01_Get_Telemetry_From_SCCM.ps1
Write-Host "*****************************************************************************" -ForegroundColor Gray
Write-Host "Sending telemetry data to Microsoft and getting updates" -ForegroundColor Cyan
.\03_Connect_To_Microsoft_SCCM.ps1
Write-Host "*****************************************************************************" -ForegroundColor Gray
Write-Host "Importing updates into the SCCMy" -ForegroundColor Cyan
.\04_Import_Updates_To_SCCM.ps1
}
2 {
Write-Host "*****************************************************************************" -ForegroundColor Gray
Write-Host "Getting Telemetry Data from SCCM" -ForegroundColor Cyan
$a = Read-Host "To proceed press y"
switch ($a){
y {
#.\C:\TEMP\OfflineUpdateSCCM\01_Get_Telemetry_From_SCCM.ps1
.\01_Get_Telemetry_From_SCCM.ps1
}
default {"You didn´t choose anything"}
}
Write-Host "*****************************************************************************" -ForegroundColor Gray
Write-Host "Sending telemetry data to Microsoft and getting updates" -ForegroundColor Cyan
$a = Read-Host "To proceed press y"
switch ($a){
y {
.\03_Connect_To_Microsoft_SCCM.ps1
}
default {"You didn´t choose anything"}
}
Write-Host "*****************************************************************************" -ForegroundColor Gray
Write-Host "Importing updates into the SCCM" -ForegroundColor Cyan
$a = Read-Host "To proceed press y"
switch ($a){
y {
.\04_Import_Updates_To_SCCM.ps1
}
default {"You didn´t choose anything"}
}
}
default {"You didn´t choose anything"}
}
Nachfolgend ist das Master Skript mit der Option 2 aufgeführt. Mittels dieser Option muss jeder Schritt des Offline Updates bestätigt werden. Das Skript kann mittels Option 1 auch ohne gesonderte Nachfragen ausgeführt werden.
Mittels des automatisierten SCCM Updates im Offline Modus sind Unternehmen in der Lage, die einzelnen, manuellen Schritte und Tasks mit einem Knopfdruck durchzuführen. Weiterhin ist eine wiederholte erfolgreiche Ausführung sichergestellt, da es keine manuellen Kopier- oder Konfigurationsschritte gibt.
Der Einsatz des Skripts in einem Scheduled Task ist weiterhin denkbar. Auf diese Weise kann eine regelmäßige Abfrage bei Microsoft stattfinden ohne den manuellen Eingriff eines Users. Die Installation der Hotfixes und Updates bleibt hingegen derzeit ein manueller Task eines SCCM Administrators.