Haikos Blog Blog von Haiko Hertes zu allen Themen rund um Microsoft und Datacenter

28Feb/170

System Center Configuration Manager: Objekt für Bearbeitung gesperrt (“Das Objekt kann nicht bearbeitet werden.”)

Ein Problem, dass ich bereits früher in einem Artikel beleuchtet hatte, ist mir heute wieder untergekommen:

Nach einem Absturz der SCCM Konsole ist ein Objekt für die Bearbeitung durch den sogenannten SEDO-Lock gesperrt. In meinem Fall war dies heute eine Application (Anwendung):

Screenshot (51)

Neben der früher angesprochenen (und  bis heute nicht supporteten) Variante, den Lock direkt auf der Datenbank zu löschen, gibt es zwei Varianten die unterstützt werden (eigentlich drei – die dritte wäre, 30 Minuten zu warten):

PowerShell:

Die erste Alternative (und auch die erste Wahl Zwinkerndes Smiley) ist die Verwendung der PowerShell:

Screenshot (53)

Get-CMApplication –Name “NAMEOFTHEAPP” | Unlock-CMObject

 

Dienst:

Alternativ kann einfach der SMS Executive Dienst neugestartet werden, was die Wartezeit von 30 Minuten abkürzt, aber natürlich auch weitere Folgen für den Betrieb des SCCM hat.

Screenshot (54)

22Jul/160

Update 1606 für System Center Configuration Manager wurde veröffentlicht

Wie das Configuration Manager Team auf seinem TechNet-Blog berichtet, steht seit heute das Update 1606 für den SCCM bereit.

Einige der Neuerungen:

  • Support für Windows 10 Anniversary Update
  • Windows Information Protection (ehemals EDP)
  • Windows Defender Advanced Threat Protection
  • Integration für “Windows Store for Business”
  • Richtlinien für Windows Hello
  • uvm.

Eine komplette Auflistung der Änderungen und Neuerungen ist hier zu finden:

http://technet.microsoft.com/en-US/library/mt752488.aspx

Das Update wird automatisch, aber erst nach und nach verteilt. Wer zu den Ersten gehören möchte, die es bekommen, kann dieses PowerShell-Skript nutzen:

https://gallery.technet.microsoft.com/ConfigMgr-1606-Enable-043a8c50

Viel Spaß damit!

20Jun/160

SCCM 2012 / 2012 R2 / 1511: HowTo Video zum Thema Endpoint Protection

Auf meinem YouTube-Kanal findet ihr seit heute ein Video zum Thema System Center Endpoint Protection. Viel Spaß beim Anschauen!

SCCM-Endpoint_Protection_Neu

https://youtu.be/-7sCHWDJsaE

26Apr/160

System Center Configuration Manager: Site Code eines Clients auslesen

Um den Site Code (Standortcode) eines SCCM Clients auszulesen, kann man WMI verwenden. Ich habe dafür ein kleines PowerShell Script geschrieben:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<# .Synopsis Returns the Site Code of a SCCM Client as a String .DESCRIPTION Queries a given computer using WMI and returns its site code for System Center Configuration Manager (Tested on 2012 R2 and 1511) .EXAMPLE Get-SMSSiteCode -MachineName PC1 Get's the site code of the Computer named PC1 #>
 
Function Get-SMSSiteCode
{
    Param(
        # The Computername of the machine that you want to query for it's SCCM Site Code
        [Parameter(Mandatory=$true)]
        [string]$MachineName
    )
 
    Return (Get-WmiObject -ComputerName $MachineName `
                          -Namespace "root\CCM" `
                          -Class sms_authority `
           ).Name.TrimStart("SMS:")
}

Downloaden könnt ihr das Skript hier!

18Apr/160

SCCM 2012 R2 / 2016: Einige neue Videos von mir sind online

Ich habe in den letzten Wochen einige neue Videos zum System Center Configuration Manager 2012 R2 bzw. 2016 (1511) gemacht. Diese könnt ihr hier ansehen:

http://studios.ppedv.de/MedienDokumente.aspx?q=System%20Center

Ihr findet dort Videos zu folgenden Themen:

  • Endpoint Protection
  • Reporting Services
  • Role Based Administration
  • Softwareverteilung
  • Verwaltung von Linux-Systemen

Viel Spaß beim Ansehen!

5Feb/160

SCCM 2012 R2 – E-Mails für Softwareanforderungen (Umfangreicher)

In einem älteren Artikel habe ich mich schon einmal mit der Frage beschäftigt, wie man neue Genehmigungsanforderungen für Software (Anwendungen) in System Center Configuration Manager per Mail an den Admin melden kann.

Was aber, wenn nicht (nur) der Admin eine Mail erhalten soll, sondern z.B. auch der Vorgesetzte des jeweiligen Benutzers, der die Software angefordert hat? Und was ist mit dem Benutzer selbst? Es wäre doch gut, wenn dieser bei Genehmigung/Ablehnung auch informiert wird?!

Das Ganze lässt sich natürlich wunderbar per PowerShell lösen. Damit nun aber nicht ein Prozess o.ä. permanent laufen muss, wäre es sinnvoll, dieses Skript z.B. nur 1x pro Stunde (über den Taskplaner) automatisch laufen zu lassen. In sofern interessieren in jedem Durchlauf des Skriptes auch nur diejenigen Anforderungen, die

  • In der letzten Stunde neu erstellt wurden (“CurrentState” ist 1)
  • In der letzten Stunde abgelehnt wurden (“CurrentState” ist 3)
  • In der letzten Stunde genehmigt wurden (“CurrentState” ist 4)

Aus dieser Überlegung und der Tatsache, dass sich sowohl der Vorgesetzte als auch die Mailadressen aus dem AD auslesen lassen, resultierte dieses einfache Script (Es ist nicht wirklich “schön” geschrieben, aber zumindest rudimentär kommentiert. Für einen produktiven Einsatz wird man es ohnehin nochmal an die eigenen Bedürfnisse anpassen müssen:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
$SiteName = "PS0"
$SiteName = "PS0"
$AdminsMail = "helpdesk@kurs.intern"
$Mailserver = "mail.kurs.intern"
$Absender = "SCCM Application Request Admin"
 
$MailAnAdmins = $True
$MailAnVorgesetzten = $True
 
function Send-MyEmail
{
 
    Param(
        [string]$Sender,
        [string]$Empfaenger,
        [string]$Mailserver,
        [string]$Betreff,
        [string]$Mailtext,
        [Switch]$TestOnly
    )
 
    try{
        If(-not $TestOnly)
        {
            Send-MailMessage -From $Sender -To $Empfaenger -Subject $Betreff -Body $Mailtext 
                -SmtpServer $Mailserver -ErrorAction Stop
        }
        else
        {
            Write-Host "E-Mail für '$Empfaenger' von '$Sender' über den Mailserver '$MailServer' `n
                        mit dem Betreff '$Betreff' und dem Text:"
            Write-Host "$Mailtext `n"
 
        }
    }
    catch{
        Write-Debug "Fehler beim Versand der E-Mail über den Mailserver $SmtpServer!"
    }
 
}
 
# PS-Modul für AD lasen
Import-Module ActiveDirectory
 
# PS-Module für SCCM laden
Import-Module "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1"
Set-Location "$($SiteName):\"
 
# ApprovalRequests auslesen, die sich in der letzten Stunde geändert haben 
# (Script soll stündlich laufen)
$OffeneRequests = Get-CMApprovalRequest | Where {$_.LastModifiedDate -gt (Get-Date).AddHours(-1)}
 
ForEach($Request in $OffeneRequests)
{
    # Anfordernder Benutzer
    $Benutzer = $Request.User
    $BenutzerLogin = Get-ADUser $($Benutzer.Substring(($Benutzer.IndexOf("\")+1),
                                                       $Benutzer.Length-$Benutzer.IndexOf("\")-1))
    $BenutzerName = ($BenutzerLogin | Get-ADUser).Name
 
    # Anwendung um die es geht
    $Anwendung = $Request.Application
 
    # Neue Anforderung
    If($Request.CurrentState -eq 1)
    {
        # E-Mail an Admin / Helpdeks senden
        If($MailAnAdmins)
        {
            Send-MyEmail -Sender $Absender -Empfaenger $AdminsMail -Mailserver $Mailserver 
                -Betreff "Neue Softwareanforderung von $BenutzerName" -Mailtext "Blabla..." 
                -TestOnly
        }
 
        # E-Mail an Vorgesetzten senden
        If($MailAnVorgesetzten)
        {
            # Vorgesetzter des anfordernden Benutzers
            $Vorgesetzter =  ($BenutzerLogin | Get-ADObject -Properties Manager).Manager | Get-ADUser
            $VorgesetzterMail = (Get-ADObject $Vorgesetzter -Properties mail).Mail
 
            Send-MyEmail -Sender $Absender -Empfaenger $VorgesetzterMail -Mailserver $Mailserver 
                -Betreff "Neue Softwareanforderung von $BenutzerName" -Mailtext "Blabla..." 
                -TestOnly
        }
    }
 
    # Anforderung wurde durch einen Administrator im SCCM genehmigt
    If($Request.CurrentState -eq 4)
    {
 
        # Mail an den anfordernden User senden
        $BenutzerMail = (Get-ADObject $BenutzerLogin -Properties mail).Mail
 
        Send-MyEmail -Sender $Absender -Empfaenger $BenutzerMail -Mailserver $Mailserver 
            -Betreff "Ihre Softwareanforderung für $Anwendung wurde genehmigt" -Mailtext "Blabla..." 
            -TestOnly
    }
 
    # Anforderung wurde durch einen Administrator im SCCM abgelehnt
    If($Request.CurrentState -eq 3)
    {
 
        # Mail an den anfordernden User senden
        $BenutzerMail = (Get-ADObject $BenutzerLogin -Properties mail).Mail
 
        Send-MyEmail -Sender $Absender -Empfaenger $BenutzerMail -Mailserver $Mailserver 
            -Betreff "Ihre Softwareanforderung für $Anwendung wurde abgelehnt" -Mailtext "Blabla..." 
            -TestOnly
    }
}

In der Ausführung sieht das dann so aus:

Approval2

Approval1

Ausführen lässt sich das Skript via Taskplaner dann beispielsweise mit:

powershell.exe -ExecutionPolicy Bypass -file "SCCMMailsFuerApprovalRequests.ps1"

Das Skript lässt sich auch hier herunterladen:

Downloadlink über OneDrive

4Feb/160

SCCM 2012 R2: Elemente nach Excel exportieren

Durch einen Hinweis wurde ich kürzlich auf eine ziemlich praktische Funktion aufmerksam. Stellen wir uns vor, wir brauchen “schnell” alle Geräte mit einer gemeinsamen Eigenschaft oder einfach alle Geräte einer bestimmten Sammlung. Und zwar möglichst in Excel, um diese an Kollegen weitergeben oder weiter verarbeiten zu können. Natürlich kann man nun einen entsprechenden Report erzeugen und dessen Ergebnis in XLS oder CSV abspeichern – aber es geht auch einfacher. Da hier ein Video mehr als viele Worte oder Bilder sagt, habe ich kurzerhand einen kurzen Clip erstellt. Seht selbst!

Hier das Ganze nochmal als direkter Link zu YouTube: https://www.youtube.com/watch?v=CANVBrIEuGE

In Kurzform und wenigen Worten: Man kann die Elemente (bspw. Geräte) markieren (geht mit STRG+A, oder auch mit STRG/SHIFT und Mausklick), mit STRG+C kopieren und dann eben mit STRG+V in Excel einfügen…

27Jan/160

SCCM: Neue Version 1601 released

Wenn man auch noch nicht viel darüber im Internet findet, so kann man aber auf der Webseite des gut informierten SCCM-MVP Niall C. Brady nachlesen, dass heute die Technical Preview vom System Center Configuration Manager in Version 1601 erschienen ist:

https://www.niallbrady.com/2016/01/27/update-1601-now-available-in-system-center-configuration-manager-technical-preview/

Details werde ich in den kommenden Tagen noch ergänzen…

19Jan/162

SCCM: Verwaltung von Clients in nicht-vertrauten Domänen und in Workgroups

Am leichtesten ist es für den Administrator natürlich, wenn alle verwalteten Geräte in der selben Domäne stehen. Aber der System Center Configuration Manager ist auch in der Lage, mit Geräten umzugehen, die außerhalb der eigenen Gesamtstruktur (“Forest”) in einer nicht-vertrauten Domäne (“Non-trusted Domain”) oder sogar nur in einer Arbeitsgruppe (“Workgroup”) stehen. Dafür sind ein paar Voraussetzungen zu erfüllen und ein paar Besonderheiten bei der Einrichtung zu beachten.

Voraussetzungen:

  • Geräte der nicht-vertrauten Domäne (“nvD”) oder der Workgroup (“WG”) können den gewünschten Verwaltungspunkt (“Management Point”, MP) per DNS auflösen
  • Verwaltete Geräte in der nvD und/oder der WG können von den Standortsystemservern (“Site Server”) des SCCMs aufgelöst werden (bei nvD zusätzlich der Domänen-Name der nvD)
  • Das Konto der Client-Push-Installation hat ausreichend Rechte auf den Zielcomputern
    • Bei nvD ist ein Domänen-Account der nvD nötig, der auf den Clients lokale Admin-Rechte hat
    • Bei WG-Computern ist ein lokales Admin-Konto nötig, dass auf jedem WG-Computer gleich konfiguriert ist (Name / Passwort)

Um nun den Configuration Manager Client auf einem Gerät in einer Workgroup hinzuzufügen, kann die Push-Installation verwendet werden. Dazu muss a) die Firewall des PCs entsprechend geöffnet werden und b) ein passendes (lokales!) Konto als Push-Installations-Konto hinterlegt werden (Mehrere Konten möglich!):

wg1

Außerdem ist es notwendig, ein passendes Netzwerkzugriffskonto (“Network Access Account”) im SCCM zu hinterlegen, denn das Computerkonto des WG-Systems hat ja keine Leserechte auf den Site-Servern der Domäne:

wg1

Nun kann der Client mittels Pushinstallation (oder auch händisch!) verteilt werden und Software und co. auf den Arbeitsgruppen-PCs bereitgestellt werden.

Für die Verwaltung von Computern in einer nicht-vertrauten Domäne (nvD) muss zunächst die Gesamtstruktur der nvD bekannt gemacht werden:

nvd1

nvd2

Außerdem muss die “Active Directory Systemermittlung” um die externe Domäne (nvD) ergänzt werden:

nvd3

nvd4

Damit können denn Geräte der externen Domäne gefunden werden – und später per Push-Installation (siehe oben) mit dem Client betankt und somit verwaltet werden.

Hinweis: Für den Aufbau einer Secondary Site in einer externen Domäne ist eine bidirektionale Vertrauensstellung notwendig! (Two-Way-Trust)

27Okt/150

SCCM 2012 R2 / 2016: Übersicht meiner HowTo’s und Videos

Da ich in den letzten Monaten immer wieder Artikel und Videos verschiedenen Themen des SCCM geschrieben bzw. produziert habe, möchte ich diese hier gerne übersichtlich verknüpfen und diesen Artikel auch bei Bedarf künftig aktualisieren.

Das sind sie also nun, meine SCCM-Artikel und Videos:

 

Bezeichnung des Artikels / Videos Typ
Installation des SCCM 2012 R2 in einer Single-Server-Lösung Video
Installation des SCCM 2016 TP2 inkl. Herstellen der Voraussetzungen Video
Download der Voraussetzungsdateien / Prerequisite Files von einem anderen Server, um diese dann für einen künftigen SCCM-Server ohne Internetzugang bereitzustellen Artikel
Grundkonfiguration des SCCM 2016 TP2 Video
Wie man mit dem SCCM 2012 R2 Software am Beispiel von Office 2013 auf den Endgeräten ausrollt Artikel
Wie man neue Genehmigungsanforderungen für Software im SCCM 2012 R2 per E-Mail verschickt Artikel
Vereinfachte Deinstallation von Anwendungen in SCCM 2012 R2 Artikel
Einrichtung und Nutzung der Betriebssystembereitstellung / Operating-System-Deployment (OSD) im SCCM 2012 R2 Video
Wie man neben dem PXE von SCCM 2012 R2 noch einen zweiten PXE- / WSUS-Server im Netzwerk parallel betreibt Artikel
Wie beseitigt man den Fehler 0x80070002 während der Betriebssystembereitstellung? Artikel
Logfile für OSD beim SCCM 2012 R2 vergrößern Artikel
Erhöhen des Timeouts für den Neustart nach Fehlern während einer OSD-Installation mit SCCM 2012 R2 Artikel
Verteilen von 3rd-Party-Updates mit Hilfe von System Center Update Publisher (SCUP) und SCCM 2012 R2 Artikel
Wie man Content des SCCM 2012 R2 statt über Netzwerk beispielsweise über USB-Datenträger zu den DPs bekommt (Vorabbereitgestellte Inhalte / Content Prestaging) Artikel
Inhalt des DP (SCCMContenLib) auf ein anderes Laufwerk verschieben Artikel
Hinzufügen von Linux-Clients zu einer SCCM 2012 R2 Umgebung inkl. Installation des Agents Artikel
PowerShell-Parser für das Ergebnis-Log einer OSD Artikel
PowerShell-Skript, um zentral herausfinden zu können, für welche TaskSequenzen welche Pakete auf welchen Verteilungspunkten (DP) fehlen Artikel

Letzter Stand der Aktualisierung: 27.10.2015

Viel Spaß damit!