SCCM 2012: FEP Policy cannot be applied (ErrorCode –2147467259)
In SCCM 2012 ist der Forefront Endpoint Protection (FEP) Client noch stärker im Configuration Manager (SCCM) integriert worden. Daher kümmert sich auch der SCCM Client um das Einspielen der FEP Policy, die als XML File vorliegt.
In einigen Fällen scheitert dies aber und die Clients erhalten in der SCCM Konsole im Bereich FEP den Status fehlerhaft.
Bei der ersten Analyse hilft das Log EndpointProtectionAgent.log auf dem Client (%systemroot%\ccm\logs). In diesem Fall war folgende Fehlermeldung zu lesen:
MDOP: UE-V–Teil 3 – Verwendung von UE-V in WHS
Da ich zu hause einen Windows Home Server (WHS) mit mehreren Clients aber ohne zentrale Profile (da keine Windows Domäne vorhanden ist) einsetze, ist User Environment Virtualization (UE-V) die optimale Ergänzung.
Dazu bin ich folgendermaßen vorgegangen:
Über das Dashboard habe ich ein neue Freigabe namens Settings angelegt. Um mir die Berechtigungsvergabe zu vereinfachen habe ich für alle relevanten Benutzer Read/Write Berechtigungen vergeben.
In einem Unterordner namens Agent liegt darin der Agent mit einem Installationsscript. Parallel zu diesem Ordner existiert ein Ordner Templates, in dem ich die selbsterstellten Vorlagen abgelegt habe.
SCCM: 64bit Variante unabhängig vom Kontext ausführen
SCCM 2007 setzt (noch) 32bit Agenten ein. Daher wird auch ein Programm zuerst einmal im 32bit Kontext ausgeführt und bekommt daher über die Redirects primär Zugriff auf das syswow64 Verzeichnis. Startet man ein regedit, so wird die 32bit Variante gestartet. Es gibt Situationen, in denen man auf jeden Fall die OS native Variante starten möchte, d.h. auf einem x64 die 64bittige und analog auf einem x86 die 32bit. Dazu kann man in einer Batchdatei überprüfen ob bestimmte Kriterien erfüllt sind, oder man verwendet direkt einen (auch mir vor kurzem
) eher unbekannten Alias: sysnative.
Diverse Tools für SCCM – Teil 5
Im letzten Teil wurde eine Batchdatei zur Erzeugung von CCR Dateien vorgestellt. Möchte man direkt eine komplette Collection installieren lassen, dann läßt sich dies wieder einfach mit der getcomputer.vbs Datei umsetzen:
makeccrall.cmd:
for /F %%i in ('cscript.exe //NOLOGO %~dp0getcomputer.vbs %1 smsserver sitecode') do call %~dp0makeccr.bat %%i
(auch hier wieder smsserver und sitecode durch die korrekten Daten ersetzen)
Alterntiv möchte man eventuell die Installation erzwingen, d.h. egal ob ein Client vorhanden ist oder nicht soll dieser auf jeden Fall installiert und gegebenenfalls repariert werden. Dazu muss in der CCR Datei ein zusätzlicher Parameter angegeben werden. Hierfür ist die Batchdatei forcemakeccr.cmd zuständig:
Diverse Tools für SCCM–Teil 4
Im vierten Teil wird eine Batchdatei zum Remoterollout des SCCM Clients vorgestellt. Dazu wird ein Client Configuration Request (CCR) erzeugt und in das entsprechende SCCM Verzeichnis abgelegt. Auf dieses reagiert der Server und versucht den Client remote zu installieren (ähnlich des Clientrollouts über die MMC Konsole).
Auch diese Batchdatei benötigt wieder die Datei findip.bat aus dem ersten Teil.
Diverse Tools für SCCM – Teil 3
Vor über einem Jahr habe ich angefangen meine SCCM Hilfsscripte hier zu veröffentlichen. Da ich noch eine ganze Reihe von diesen Batchdateien habe, kommen jetzt noch einige weitere Posts zu diesem Thema.
Im Teil 2 wurde die Batch und vbs Datei vorgestellt, um auf eine Reihe von Clients die Hardwareinventur anzustossen.
Dies geht genauso mit dem Computer Policy Update:
Ein bisschen Batchmagie
Kleine Batchfiles sind immer wieder praktisch um schnell kleinere Probleme zu lösen. Diesmal stelle ich ein paar Dateien vor, die zum Erstellen und Kopieren verschiedener Dateien eingesetzt werden können. Dies ist z.B. Hilfreich wenn man die Transfergeschwindigkeit testen möchte. Das eingesetzte Robocopy zeigt am Ende die durchschnittliche Geschwindigkeit an.
Zuerst zwei Batchdateien, um eine Menge kleiner Dateien bzw. eine große Datei zu generieren:
2000 kleine 30 KByte Dateien erzeugen:
SCCM: Paketierung von PDFCreator
Dadurch, dass der PDFCrator keinen unsignierten Druckertreiber installiert, ist eine Paketierung auch unter Windows 7 x64 relativ einfach. Trotzdem ist die integrierte Yahoo/PDFForge Toolbar bei der Installation hartnäckig und lässt sich erst nach einigen Versuchen ausklammern. Die hier vorgeschlagene Vorgehensweise wurde mit der PDFCreator Version 1.2.2 erfolgreich getestet.
Zuerst verwende ich wie üblich eine install.cmd für den Aufruf:
Enteo, Powershell und Wake on Lan (WoL)
Wie versprochen geht es weiter mit der Automatisierung von Enteo durch Powershell. In diesem Blog Eintrag nehme ich mir die Funktion für das Aufwecken eines PCs vor. Leider funktioniert hier die WoL Funktion von Enteo nicht immer. Das liegt u.a. daran, dass bei einem neuen PC nicht alle Informationen vorliegen. In den meisten Netzen wird ein normales WoL Paket (ein Broadcast Paket) nicht an alle Subnetze verteilt. Der Enteo Server und der zu weckende Client sind im Allgemeinen in unterschiedlichen Subnetzen beheimatet. Daher muss mit einem directed Broadcast gearbeitet werden. Dazu wird das Broadcast Paket direkt an die Broadcast Adresse des Zielsubnetzes geschickt. Dazu ist aber die IP Adresse und die Subnetzmaske zur Ermittlung der Broadcast Adresse notwendig. Diese Information liegt Enteo nicht immer vor und ich habe noch keinen Weg gefunden, diese Info beim Erstellen des Computerkontos mitzugeben.
Profilepfad per Batch-Datei auslesen
Bei einigen Automatisierungen ist es notwendig den Profilpfad eines Benutzers auszulesen und einen eventuellen DFS Pfad in einen physikalischen Pfad aufzulösen.
Hierfür habe ich eine kleine Batch-Datei geschrieben:
@echo off
set samaccountname=%~1
for /f "tokens=* usebackq" %%a in (`AdFind.exe -f "samaccountname=%samaccountname%" profilePath /list`) do (
set profilePath=%%a
)
for /f "delims=<> usebackq tokens=1,2,3,4,5" %%a in (`dfsutil diag viewdfspath %profilepath%`) do (
if NOT %%e.==. set profilePath=%%e
)
echo %profilePath%
Der Profilpfad wird in Zeile 3 mit Hilfe von adfind anhand des Benutzernamens ermittelt, per for ausgewertet und an eine Umgebungsvariable übergeben.
Diese wird in Zeile 7 an dfsutil übergeben, dass mit dem Befehl diag den physikalischen Pfad anzeigt (ermittelt mit dem aktuellen Standort). Die Ausgabe wird erneut mittels for ausgewertet, wobei die Zeilen an den Größer- und Kleinerzeichen getrennt werden. An fünfter Stelle steht dabei der physikalische Pfad. Handelt es sich bei dem Profilpfad um keinen DFS basierten, dann ist die fünfte Stelle leer und wird daher nicht an die Variable übergeben.