Archiv der Kategorie: SCCM

Schulhauslizenz von Young World 2 installieren

Die PH Luzern hat eine Lernsoftware zu Young World erarbeitet und stellt diese den Schulen von Luzern kostenlos zur Verfügung. Schulen von anderen Kantonen können das Lehrmittel über diesen Anbieter beziehen.

Wir haben für unsere Primarschule eine Lizenz gekauft und nun sollte ich eine Installation für die entsprechenden Computer erstellen. Auf einem beiliegenden Zettel wird vorgeschlagen, das Programm auf einem Server zu installieren und dann eine entsprechende Verknüpfung zu erstellen, die man dann ja auch irgendwie auf die Clients verteilen müsste. Da keine zentrale Datenbank oder ähnliches gepflegt wird, ist mir eine lokale Installation auf den Clients viel sympathischer, da dann bei der Anwendung keine grossen Datenpakete wie Audiofiles übers Netzwerk fliessen.

image

Das Programm schlägt C:\Program Files (x86)\English_YW2 als Zielverzeichnis vor. Bei einer späteren Verteilung könnte das Probleme mit vorhandenen 32bit Windows 7 Installationen geben, die wir auch immer noch im Einsatz haben.

image

Daher habe ich die Installation auf C:\Lernprogramme\English_YW2 verlegt.

image

Die Installation besteht aus einem reinen Kopiervorgang (und dem Erstellen der dem Installationspfad angepassten Verknüpfungen).

image

Da das Programm nichts anderes benötigt als die Dateien im Ordner, kann man nun diesen Ordner und die Verknüpfung (auf den richtigen Pfad) speichern und die virtuelle Maschine wieder auf den Grundzustand zurücksetzen.

Nun kann man ein Skript zur Installation erstellen, das die Dateien auf den lokalen Client kopiert.

@echo off
REM Ordner English_YW2 auf c:\Lernprogramme\ kopieren
robocopy %~dp0\English_YW2 c:\Lernprogramme\English_YW2 /s
REM Verknuepfung in Startmenue kopieren
robocopy „%~dp0\English Young World 2“ „C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Lernprogramme“
REM Return exit code to sccm
exit /B %EXIT_CODE%

image

Nun kann man mit SCCM den ganzen Ordner auf einen Verteilungspunkt verteilen und als Programm das install.cmd Skript ausführen.

image

Wie oben schon angetönt wäre eine andere Möglichkeit, dass man die Software auf einem Server installiert und dann nur die Verknüpfung auf die Clients verteilt. Das könnte man auch mit Robocopy erledigen oder über die Group Policy Preferences. Dies verursacht dann aber mehr Netzwerklast im Einsatz und vor allem installiere ich nicht gerne Clientsoftware auf Servern. Seit der Virtualisierung von Servern ist dies zwar auch etwas entschärft, man kann ja einfach noch einen zusätzlichen Applikationsserver erstellen, auf dem keine wichtigen anderen Dienste laufen.

Man merkt also leider auch dieser neueren Lernsoftware an, dass bei der Erstellung nicht an grössere Netzwerke und automatisierte Verteilung gedacht wurde. Wünschenswert wären Parameter für die automatisierte Installation im Stil von setup.exe /”ich möchte eine automatische Installation” /”ich möchte kein Desktopsymbol” /”Pfad für die Installation” /”Pfad zu einem allfälligen Logfile”.

BITS Problemen nachgehen

SCCM kann so konfiguriert werden, dass bei Dateiübertragungen BITS (Background Intelligent Transfer Service) verwendet wird.

Bei Problemen mit BITS kann man z.B. einen Download Vorgang auf Fehlermeldungen überprüfen. Auf der Kommandozeile ging das mit “bitsadmin /list /allusers”.

image

Da bekommt man aber eine Fehlermeldung, dass BITSAdmin veraltet sei und man besser die BITS Powershell Cmdlets verwenden würde.

Zuerst muss man die Module importieren:

Import-Module BITSTransfer

image

Danach kann man die Dateiübertragung überprüfen mit:

Get-BitsTransfer –AllUsers

image

UEFI Sicherheitslücke

Damit ein Computer ein Betriebssystem wie Windows starten kann, müssen zuerst Information erfasst werden wie z.B. “Welche Peripheriegeräte wie Tastaturen sind angeschlossen?” “Ist eine Festplatte vorhanden?” “Existiert auf dieser Festplatte ein Betriebssystem?”…

Erst danach kann das Betriebssystem wie Windows von dieser Festplatte gestartet werden.

Diese Firmware des Computers wird oft auch BIOS oder neuer UEFI genannt.

“Das BIOS [/ˈbaɪ.oʊs/] (von englisch „basic input/output system“) ist die Firmware bei x86-PCs. Es ist in einem nichtflüchtigen Speicher auf der Hauptplatine eines PC abgelegt und wird unmittelbar nach dessen Einschalten ausgeführt. Aufgabe des BIOS ist es unter anderem, den PC zunächst funktionsfähig zu machen und im Anschluss das Starten eines Betriebssystems einzuleiten.” Quelle: http://de.wikipedia.org/wiki/BIOS

“Die Weiterentwicklung der Hardware hat im Laufe der Zeit (Stand 2010 ist das BIOS-Konzept bereits mindestens 35 Jahre alt) zu einer Reihe von iterativen, inkompatiblen Ergänzungen geführt, die zunehmend den Charakter von „Flickschusterei“ tragen und bei 64-Bit-Systemen an ihre Grenzen stoßen. Daher wurde in Form von Extensible Firmware Interface (EFI, bzw. UEFI) ein BIOS-Nachfolger entwickelt.” Quelle: http://de.wikipedia.org/wiki/BIOS

Nun gibt es aber mehrere Sicherheitslücken in der UEFI Referenzimplementierung von Intel. Diese Referenzimplementierung wurde dann von vielen Computerherstellern übernommen und für ihre Zwecke angepasst. Die Sicherheitslücken sind so in die UEFI Firmware von vielen verschiedenen Herstellern gekommen.

Falls ein Angreifer z.B. durch andere Sicherheitslücken Admin-Rechte auf einem Windows Rechner erlangt, kann er von Windows aus die UEFI Firmware verändern und auf diesem Weg z.B. ein Rootkit einschleusen. Da die Firmware vor dem Betriebssystem geladen wird, bieten Sicherheitsmechanismen des Betriebssystems wie Virenscanner keinen Schutz mehr. Im schlimmsten Fall hat man kompromittierte Systeme und kann dies nicht einmal überprüfen. Aus diesem Grund haben die Entdecker von Mitre der Sicherheitslücken von “Extreme Privilege Escalation” gesprochen.

Aus der Präsentation von Mitre:

image

image

Die meisten unserer Systeme kommen von Lenovo. Lenovo hat wie viele der anderen grossen Hersteller auch betroffene Systeme und veröffentlicht diese inkl. der nötigen Firmware Version ab der das Problem behoben ist.

Die Firmware Updates kann man ohne Benutzerinteraktion über SCCM verteilen. In der Datei readme.txt ist jeweils das Vorgehen beschrieben. Bei der Version zum Bild unten würde der Befehl “wflash2.exe IMAGEEFB.ROM /quiet” lauten.

image

Ich weiss aber noch nicht, wie ich die Updates durchführe. Bei uns sind 143 Systeme betroffen. Wenn während eines Firmwareupdates der Computer vom Strom getrennt wird, könnte die Firmware in einem Zustand sein, den man nicht wieder reparieren kann. Die Feststationen lassen sich mal in der Nacht über WOL aufwecken, damit sie das Update durchführen, aber die Laptops nicht. Allenfalls verteile ich da das Update, weise es aber nicht zu, so dass die Schuhaussupporter vor Ort das Update manuell ausführen müssten und sicherstellen können, dass es korrekt durchläuft. Mal sehen…

Nachtrag
Bei einigen Modellen von Lenovo kann die Firmware nach einem fehlerhaften BIOS-Update scheinbar wieder gerettet werden, indem man einen Jumper setzt und dann von CD startet. Dazu sucht man im Manual nach “Recovering from a POST/BIOS update failure”.

image

Java 32bit EXE auf 64bit Windows verteilen schlägt fehl

Bisher habe ich die jeweils neueste Version von Java immer gemäss dieser Anleitung verteilt. Dabei hat man aus der EXE Datei die MSI Datei extrahiert (und dann mit Orca angepasst). Dieses Vorgehen wird aber schon länger nicht mehr von Oracle unterstützt, daher wollte ich bei der neuen Version den von Oracle empfohlenen Weg einschlagen.

image_thumb

Gemäss Oracle kann man die exe Dateil silent installieren. Alternativ bieten sie auch weiterhin ein MSI an, das aber nur kostenpflichtig erhältlich ist:

image_thumb4

Vielleicht wär das ja zahlbar und sicher praktisch. Eine Suche war dann aber ziemlich ernüchternd… (CHF9,500.00 – CHF11,668.00)

image_thumb5

Also versuchte ich die EXE Datei, die man von www.java.com herunterlädt, gemäss der Beschreibung von Oracle silent zu installieren.

image

Statt mit dem kostenlosen Download zu beginnen, wählt man alle Java-Downloads und dann die gewünschte Offline Installation aus. Da wir mit dem 32bit Internet-Explorer arbeiten, sollte auch die Java Installation für 32bit ausgewählt werden, unabhängig davon, ob ein 64bit Windows installiert wurde.

image

Um die Installation zu steuern, kann man ein ”Configuration File” mitgeben oder Optionen für die “Command-Line” Installation anfügen. Die Optionen sind die gleichen, die man auch für das “Configuration File” benutzen kann und finden sich hier.

Dies ergibt dann für meine Bedürfnisse folgende Installation:

jre-8u25-windows-i586.exe AUTO_UPDATE=Disable /s

image

Ein Problem dabei ist, dass die alte Version (in meinem Fall Java 7 Update 67) nicht deinstalliert wird.

image

Um diese Version zu deinstallieren, kann man den Befehl

msiexec /x {26A24AE4-039D-4CA4-87B4-2F03217067FF} /qn

verwenden. Bei der neuen Version von SCCM (ab 2012) kann man auch angeben, dass die alte Version gelöscht werden soll, wenn man die neue installiert.

Leider funktioniert diese Vorgehensweise nicht auf 64bit Computern für die 32bit Javaversion (obwohl das der von Oracle empfohlene Weg für eine silent Installation ist), wenn der Befehl über den System Account ausgeführt wird (wie meistens bei Softwareverteilung).

Die EXE Datei extrahiert zuerst ein MSI. Wenn man das als lokaler Administrator durchführt, wird das MSI in c:\users\<username>\appdata\locallow\sun\java\jre<versionsnummer> extrahiert und dann ausgeführt. Wenn der Systemaccount die EXE Datei ausführt, wird die 32bit Version in c:\windows\syswow64\config\systemprofile\appdata\locallow\sun\java\… entpackt, die 64bit Version in c:\windows\system32\… (ist zwar nicht ganz logisch mit 32 und 64, ist aber so…).

image

Der Windows Installer von einem 64bit Windows ist aber auch eine 64bit Anwendung und sucht die Datei nachher im 64bit Ordner c:\windows\system32\… wo er sie nicht finden kann, was dann mit einem Fehlercode 1619 quittiert wird, den man normalerweise gar nicht zu Gesicht bekommt, weil SCCM (oder andere Deploymentlösungen) die Installation silent mit dem System-Account durchführen…

image

Nochmals kurz zusammengefasst …

  • Oracle empfiehlt eine silent Installation mit der EXE oder mit dem kostenpflichtigen MSI für etwa CHF 10’0000.-
  • Wählt man die Installation mit der EXE Datei, kann man ein 32bit Java nur auf ein 64bit Windows installieren, wenn der Benutzer zwar lokale Adminrechte hat, aber nicht der System-Account ist.
  • Und schon ist man in der Sackgasse… Danke für die Empfehlung, Oracle.

Es gibt Wege, wie man auch das hinbiegen könnte (wie dieser, der einen Ordner vorab erstellt und dann einen Junction Point benutzt, um dem System vorzugaukeln, dass der Ordner “system32” der gleiche ist wie “syswow64”. Aber ich gehe doch lieber den alten Weg über das extrahierte MSI, der von Oracle nicht mehr unterstützt wird…

Böse, wer dahinter Kalkül von Oracle vermuten würde, das teure MSI zu verkaufen Zwinkerndes Smiley

Arbeiten mit dem System-Account

Wenn über SCCM z.B. eine Softwareinstallation auf einem Client initiiert wird, führt der Client die Befehle unter dem System-Account “nt-autorität\system” aus. Wenn nun ein Skript z.B. unter einem lokalen Administrator läuft, aber über SCCM nicht, kann die Fehlersuche deutlich vereinfacht werden, wenn man Befehle unter dem System-Account ausführen kann.

Dazu benötigt man PsExec aus den PSTools von Windows Sysinternals.

Weiterlesen

VLC Media Player verteilen

Nachtrag: Neu verteile ich das MSI vom VLC Media Player.

Diese Anleitung ist zwar schon älter, funktioniert aber bis und mit Version 3.0.3. Ganz unten stehen Bemerkungen zu den einzelnen Versionen.

Bisher haben wir den Mediaplayer benutzt, um Filme abzuspielen. Diesen habe ich auch um weitere Codecs erweitert, damit man möglichst viel abspielen kann.

Trotzdem hat sich gezeigt, dass damit nicht alles gelöst werden kann und so wollte ich den VLC Player verteilen. Obwohl es sich dabei um eine weitere Software handelt, die man regelmässig aktuell halten muss, da sie mit dem Internet kommuniziert und damit über allfällige Sicherheitslücken Malware auf ein System kommen könnte.

Eine Möglichkeit wäre, VLC mit Silent-Parametern zu installieren, dann gibt es aber auch eine Desktopverknüpfung und eine Abfrage beim ersten Start.

image

Ausserdem scheint gemäss Internet dann ein Upgrade auf eine neue Version nicht zu funktionieren. Mit dem Silentparamter /S wird die Abfrage unterdrückt, ob die alte Version erneuert werden soll und so bleibt die Installation stehen. Dies habe ich aber nicht selber überprüft.

Besser schienen mir da die verschiedenen Anleitungen, die das Installationsprogramm anpassen, bevor es verteilt wird.

Um die Installation anzupassen, muss man NSIS (nullsoft scriptable install system) herunterladen und installieren.

Das entsprechende NSIS Script, um die Installation anzupassen, ist nicht in allen Versionen vom VLC Player enthalten. Am besten verwendet man die 7z Version vom FTP Server.

Nun kann man die Datei “vlc.win32.nsi” mit einem Editor öffnen (z.B. mit Notepad++) und anpassen.

Standardsprache
Hier muss man Deutsch ausschneiden und vor dem ersten Eintrag wieder einfügen. Der erste Eintrag unter “Language files” wird zur Standardsprache.

image

Verknüpfungen
Da deaktiviere ich alle Verknüpfungen, ausser derjenigen im Startmenü, die das Programm startet. Dazu kann man die Zeilen einfach mit einem führenden Semikolon auskommentieren.

image

Fragen beim Start
Damit die Fragen beim Start (Bild ganz oben) nicht kommen, kann man die verbleibende Verknüpfung um folgenden Eintrag ergänzen:


--no-qt-privacy-ask --no-qt-updates-notif

image

Fehler beheben
Leider ist im Skript ein Fehler, den man noch beheben muss. Die folgenden Zeilen haben einen falschen Schrägstrich. Statt einem normalen Slash muss ein Backslash gesetzt werden.

image

Wenn man diesen Fehler nicht behebt, bekommt man folgende Fehlermeldung.

image

Am Schluss kann man die Datei speichern und schliessen. Um ein angepasstes Setup zu erhalten kann man einen Rechtsklick auf “vlc-win32.nsi” machen und “Compile NSIS Script” auswählen.

image

In NSIS wird angegeben, wohin die neu erstellte EXE-Datei gespeichert wird (in dieser Version im gleichen Verzeichnis, wie der entpackte Ordner).

image

Ich ändere jeweils noch den Namen von vlc-2.1.3-win32.exe auf vlc-aktuell.exe, damit die Version nicht im Namen steht. So kann man mit SCCM später einfach die Datei ersetzen und die Verteilung erneut auslösen lassen.

Diese angepasste Version kann man nun mit dem Silentparameter /S verteilen:

vlc-aktuell.exe /S

Nachtrag
Bei der Version 2.1.5 war das NSIS Skript leider auch bei der 7z Version vom FTP Server nicht dabei. Daher habe ich die Version 2.1.3 heruntergeladen, bei der es noch dabei war. Man kann dann folgende Dateien resp. Verzeichnisse in den Ordner mit der neuen Version kopieren:

  • Verzeichnis helpers
  • Verzeichnis languages
  • Verzeichnis NSIS
  • spad.nsi
  • spad-setup.exe
  • vlc-win32.nsi

Da auf diesem Weg ein altes NSIS Skript verwendet wird, muss man zusätzlich zu den oben beschriebenen Änderungen noch die Versionsnummer anpassen.

image

Nachtrag 2
Perfekt. Bei der Version 2.2.0 ist das NSIS Skript wieder dabei…

Nachtrag 3
Bei der Version 2.2.6 ist das NSIS Skript wieder nicht mehr dabei. Daher habe ich wieder von 2.2.4 die im Nachtrag (1) beschriebenen Dateien und Ordner kopiert und entsprechend angepasst. Zusätzlich musste ich dieses Mal noch die 3 Manifest Dateien

  • axvlc.dll.manifest
  • npvlc.dll.manifest
  • vlc.exe.manifest

in den 2.2.6 Ordner kopieren.

Nachtrag 4 (Version 3.0.0)
Bei der Version 3.0.0 ist das NSIS Skript auch nicht dabei. Man bekommt die Daten z.B. aus der Version 2.2.5.1 und kann der Anleitung bis und mit Nachtrag (1) folgen. Die Dateien aus Nachtrag 3 werden nicht benötigt.

Forefront Endpoint Protection mit SCCM 2007

Forefront Endpoint Protection wird bei uns über SCCM 2007 mit der gleichen Technik wie andere Updates von Microsoft aktualisiert. Von Zeit zu Zeit hatte ich dann aber wegen dem FEP Paket einen kritischen Status bei der Komponente SMS_DISTRIBUTION_MANAGER mit Fehler-Meldungs-ID 2328 und 2302.

image

Eine Recherche nach den Fehler-Meldungs-ID’s hat mich dann auf folgenden Eintrag im Technet Forum gebracht.

But if the large files are not going to be updated, and only small files or new files, then BDR is not a good thing – can take longer to calculate the hash and signatures than distributing the new/updated files.

Also habe ich für dieses Paket die “Binäre differenzielle Replikation” deaktiviert.

image

Nun funktioniert es wieder problemlos.

Anmeldeprobleme nach Installation von IE10

Mit IEAK10 habe ich eine angepasste Installation vom Internet Explorer 10 erstellt und diese über SCCM verteilt. Obwohl ich das Paket an verschiedenen Computern getestet habe, gab es Probleme nach der Verteilung. Benutzer, die sich zum ersten Mal an einem Computer anmelden wollten, bekamen folgende Meldung:

“Die Anmeldung des Dienstes “Benutzerprofildienst” ist fehlgeschlagen. Das Benutzerprofil kann nicht geladen werden.”

image 

Wenn man im Internet nach dieser Meldung sucht, findet man viele Einträge, die sich auf den Knowledgebase Artikel 947215 beziehen. Dort wird unter “Method 1” beschrieben, wie man fehlerhafte Profile mit der Endung .bak manuell in der Registry so anpasst, dass sich der User wieder anmelden kann. Dies war bei uns aber nicht das Problem, es gab keine fehlerhaften Ordner in der Registry, es konnten sich ja gerade die User nicht anmelden, für die noch kein Profilordner in der Registry erstellt wurde.

In den Logfiles fand ich einen Eintrag mit Ereignis-ID 1509 und dem Hinweis, dass die Datei c:\Users\Default\AppData\Local \Microsoft\Windows\Temporary Internet Files\SQM\iesqmdata_setup0.sqm nicht vom Default Profil in das neue Profil kopiert werden konnte.

image

Die oben genannte Datei wird scheinbar bei der Installation des mit IEAK erstellten Internet Explorer 10 Pakets erstellt und mit falschen Berechtigungen versehen. Wenn sich nun ein neuer User anmelden möchte, wird das Kopieren des Default Profiles abgebrochen, weil diese Datei falsche Berechtigungen aufweist.

Scheinbar gab es dieses Problem schon bei der Verteilung von Internet Explorer 9. Wenn man die Datei manuell löscht, können sich auch wieder neue Benutzer anmelden.

Also habe ich in SCCM ein Programm erstellt, das diese Datei löscht:

cmd.exe /c del “c:\Users\Default\AppData\Local\Microsoft\Windows\Temporary Internet Files\SQM\iesqmdata_setup0.sqm” /f

image 

Das funktioniert, aber erst nachdem das Programm ausgeführt wurde, was je nach Einstellung des SCCM Clients länger dauern kann. Wenn also die Computer gestartet werden und sich direkt ein neuer User anmeldet, kann es sein, dass es nicht funktioniert.

Also musste ich es über die Gruppenrichtlinien lösen. Über “Computerkonfiguration” –> “Einstellungen” –> “Windows-Einstellungen” –> “Dateien” kann man eine Datei schon beim Computerstart löschen.

image

Probleme mit Updates bei build&capture

Microsoft veröffentlicht seine Updates jeweils am Patch Tuesday. Danach verteile ich die Updates jeweils mit SCCM. Zusätzlich dazu erstelle ich mit einem sogenannten build&capture Vorgang ein neues Grundimage mit den neuen Updates, das verwendet wird, wenn ein Computer neu aufgesetzt wird. Damit ist sichergestellt, dass ein neu aufgesetzter Computer bereits beim ersten Start über die sicherheitsrelevanten Updates verfügt und nicht erst danach die vielen Updates seit der Imageerstellung installieren muss. Es gibt aber ein grundsätzliches Problem bei vielen Updates, dass sich aber durch einen Hotfix von Microsoft beheben lässt.

Nun bin ich aber auf ein neues Problem gestossen. Bei der Installation der Updates bricht der Vorgang am Schluss ab und die build&capture Tasksequenz wird nicht bis zum Ende durchgeführt, sondern bricht ab und wird weiterhin als “wird ausgeführt” angezeigt. 

image

Nach diversen Tests konnte ich es auf die folgenden KB Artikel eingrenzen:

KB 982671: The.NET Framework 4 is available on Windows Update
KB 982670: The .NET Framework 4 Client Profile is available on Windows Update
KB 2529073: Binary files in some USB drivers are not updated after you install Windows 7 SP1 or Windows Server 2008 R2 SP1

Ausserdem tritt das Problem nur bei der 64bit Tasksequenz auf. Da es sich um schon ältere Updates handelt, muss etwas neueres mit diesen in Konflikt stehen. Nach Recherchen im Internet musste ich feststellen, dass viele Probleme mit Updates installieren bei einer build & capture Tasksequenz haben, vor allem mit den .NET Frameworks, wie das bei mir ja nun auch der Fall war.

Daher habe ich auf die 3 Updates verzichtet und dafür das .Net Framework 4 als Installationsdatei heruntergeladen und in die Tasksequenz eingebaut. 

Nachdem man das Paket erstellt hat, kann man die Software mit dem Schalter /q installieren.

image

Die .NET 4 Installation habe ich nach den Updates gemacht.

image

Somit kann ich immer noch nicht genau sagen, wieso die Installation der Updates abbricht. Wahrscheinlich hat es mit einer Reihenfolge der Installation zu tun, die drei Updates sind ja schon älter. Wie der Konflikt entsteht oder wie man ihn umgehen könnte, kann ich nicht sagen. Aber mit der manuellen Installation ist gewährleistet, dass das System vollständig gepatcht ist. Dies muss im Moment genügen, für weitere Nachforschungen fehlt einfach auch die Zeit.