ConfigMgr: Powershell Library Update
Vor einiger Zeit wurde die Powershell Library für ConfigMgr aus den Cumulative Updates herausgenommen und wird getrennt veröffentlicht. Dadurch können andere Releasezyklen genutzt werden.
Jetzt wurde vor zwei Tagen eine neue Version veröffentlicht:
Sie ist verwendbar für alle aktuellen Configuration Manager Versionen:
- System Center 2012 Configuration Manager SP2
- System Center 2012 R2 Configuration Manager
- System Center 2012 R2 Configuration Manager SP1
- System Center Configuration Manager (current branch version 1511)
Und funktioniert auch mit der aktuellen Preview. In der Preview 1601 soll sie bereits enthalten sein.
ConfigMgr: JRE 8u71 verteilen
Update 20160130: Im Script fehlte ein kleiner Teil, daher war die Verteilung nicht in jedem Fall erfolgreich. Dies ist jetzt angepasst.
Nachdem ich im letzten Post die Verteilung von 8u66 beschrieben habe, schiebe ich direkt die Verteilung vom aktuellen 8u71 hinterher. Wie gewünscht ist es hauptsächlich das Austauschen der EXE und Anpassen der Filenamen bzw. GUIDs und Versionsnummern.
<appdefinition>
<file>jre-8u71-windows-i586.exe</file>
<hash type="SHA256">3CC0BE2A34F0989692C30F2CACB89CACFCA7159570D5FC8C1B1498C60CBC07FB</hash>
<info>
<setupType>InnoSetup</setupType>
<isX86>true</isX86>
<company>Oracle Corporation</company>
<productName>Java 8 Update 71</productName>
<msiProductCode>{26A24AE4-039D-4CA4-87B4-2F83218071F0}</msiProductCode>
</info>
<install>
Show-InstallationProgress -StatusMessage 'Installing Java JRE. This may take some time. Please wait...'
$path=join-path (join-path $env:programdata 'Oracle') 'Java'
if ((Test-Path $path) -eq $false) {
New-Item -Type Directory $path |out-null
}
new-item -type File (join-path $path 'java.settings.cfg') -force | out-null
if ($is64Bit) {
$path=join-path $envWinDir "System32\config\systemprofile\AppData\LocalLow\Oracle"
$symName=join-path $envWinDir "SysWOW64\config\systemprofile\AppData\LocalLow\Oracle"
if (Test-Path $symname) {
remove-Item -Recurse -Path $symName
}
if (-not (Test-Path $path)) {
new-item -ItemType Directory -Path $path
}
#Quelle: https://gallery.technet.microsoft.com/scriptcenter/New-SymLink-60d2531e
Try {
$null = [mklink.symlink]
} Catch {
Add-Type @"
using System;
using System.Runtime.InteropServices;
namespace mklink
{
public class symlink
{
[DllImport("kernel32.dll")]
public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);
}
}
"@
}
Try {
$return = [mklink.symlink]::CreateSymbolicLink($SymName,$Path,1)
} Catch {
}
}
Execute-Process -Path "jre-8u71-windows-i586.exe" -Parameters "/s INSTALL_SILENT=Enable AUTO_UPDATE=Disable WEB_JAVA=Disable WEB_ANALYTICS=Disable REBOOT=Disable NOSTARTMENU=Enable SPONSORS=Disable" -WindowStyle Hidden
</install>
<uninstall>
Execute-MSI -Action Uninstall -Path "{26A24AE4-039D-4CA4-87B4-2F83218071F0}"
</uninstall>
<detection>
if ([IntPtr]::Size -eq 8) {$regPath="HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"} else { $regPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"}
Get-ItemProperty $regPath | where {$_.psChildname -like "{26A24AE4-039D-4CA4-87B4-2F83218071F0}" -and $_.DisplayVersion -eq "8.0.710.15" -and $_.WindowsInstaller -eq 1}
</detection>
</appdefinition>
ConfigMgr: JRE 8u66 verteilen
Seit längerem stört es mich, dass man für die JRE Verteilung immer noch das MSI File extrahieren muss. Das macht den Sinn vom AutomaticAppDeployment kaputt, da mehr manuelle Schritte notwendig sind.
Ursache dafür ist ein alter Bug im Oracle JRE Setup, der Probleme mit der Installation im SYSTEM Kontext von 32bit Java unter x64 Betriebssystemen hat. Der Bug ist u.a. hier dokumentiert: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7014194
Angeblich ist der Fehler bereits in 8u51 behoben. Meine Realität sieht aber anders aus.
Consumerization of IT – Revisited
Anfang 2014 habe ich in Channel9 eine kleinen Überblick über “Consumerization of IT” gegeben: https://channel9.msdn.com/Series/Ein-Ueberblick-ueber-Consumerization-of-IT/Was-ist-Consumerization-of-IT-
Wie stellt sich das damals skizzierte Bild von Microsoft Technologien heute dar?
Zentraler Angelpunkt aller Aktivitäten sollten immer noch die Daten sein. Daher habe ich schon damals viel Augenmerk auf AD RMS gelegt. Mittlerweile wurde es durch einen Azure Dienst namens Azure Rights Management ergänzt. Durch die Integration in Azure AD und eines On-Premise Connectors wird der Austausch mit anderen Firmen deutlich vereinfacht, da keine individuellen Trusts zwischen Firmen erzeugt werden müssen. Durch die Verwendung von RMS for Individuals kann darüber hinaus ein sicherer Austausch von Dokumenten auch mit Personen erfolgen, die keinen Zugang zu kostenpflichtigen Azure Diensten haben.
automateAppDeployment – Version 0.5
Das Toolkit zum automatischen Erstellen von Verteilungen im ConfigMgr ist jetzt in der Version 0.5 verfügbar.
Folgende Punkte haben sich geändert:
-
0.5 – 2015-09-29
-
NEW: MSI Product Code kann ebenfalls überschrieben werden (z.B. beim Mumble Client)
-
BUG: Fehler im InnoSetup Powershell Code korrigiert.
-
NEW: GlobalDef Variable, um nur die Dateien anzulegen und keine ConfigMgr Integration durchzuführen.
-
BUG: Falls der Files Ordner im Template noch nicht existiert, scheiterte das Kopieren.
-
BUG: Bei der neuen AppDeploymentToolkit Version wurde die Abschlussmeldung nicht mehr entfernt.
ConfigMgr: 7-zip 15.07 beta verteilen
Seit ca. 14 Tagen gibt es eine neue Beta vom beliebten 7-zip Packer.
Hier das passende XML File inkl. aktualisiertem Hash-Wert:
<appdefinition>
<file>7z1507-x64.exe</file>
<hash type="SHA256">E20B323C9FDD4C487B244309A3B8DD256B2ED0FDD13F55E1FEEC0B39B655D7FA</hash>
<info>
<company>Igor Pavlov</company>
<setupType>NSIS</setupType>
<isX86>false</isX86>
<hasUninstall>true</hasUninstall>
</info>
<install/>
<uninstall>
Show-InstallationProgress -StatusMessage "Uninstalling 7-Zip 15.07 beta. This may take some time. Please wait..."
$regPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
$uninstallApp=(Get-ItemProperty $regPath | where {$_.DisplayName -like "*7-Zip 15.07 beta*"}).UninstallString.replace("`"","")
Execute-Process -Path "$uninstallApp" -Parameters "/S" -WindowStyle Hidden
</uninstall>
<detection>
$regPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
Get-ItemProperty $regPath | where {$_.DisplayName -like "*7-Zip 15.07 beta*"}
</detection>
</appdefinition>
ConfigMgr: Firefox 38.3.0 ESR bereitstellen
Hier wurde schon lange keine Verteilung von Firefox vorgestellt. Mittlerweile empfehle ich für Firmen den ESR Zweig. Dabei wird eine Version eine bestimmte Zeit eingefroren und nur noch Sicherheitsupdates eingefügt. Ähnlich wie bei Windows 7 bei dem auch nich ständig die Oberfläöche ausgetauscht wird.
Die aktuelle Version 38.3.0 kann mit folgendem appdefinition.xml bereitgestellt werden:
<appdefinition>
<file>Firefox Setup 38.3.0esr.exe</file>
<hash type="SHA256">82B91F1F7326F356A7411E0646182B5D901E4C2FB3165C957CA0AD52FB46D98F</hash>
<info>
<company>Mozilla Corporation</company>
<productName>Mozilla Firefox</productName>
<productversion>38.3.0</productversion>
<setupType>NSIS</setupType>
<isX86>true</isX86>
<hasUninstall>true</hasUninstall>
</info>
<install>
$inf=Join-Path $env:temp firefox.ini
$content="[Install]
QuickLaunchShortcut=false
DesktopShortcut=false
MaintenanceService=false" -replace "`n", "`r`n"
Out-File -FilePath $inf -Force -InputObject $content -Encoding ascii
Show-InstallationProgress -StatusMessage "Installing $appName $appVersion. This may take some time. Please wait..."
Execute-Process -Path "Firefox Setup 38.3.0esr.exe" -Parameters "/INI=`"$inf`"" -WindowStyle Hidden
</install>
<uninstall>
if ([IntPtr]::Size -eq 8) {$regPath="HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"} else { $regPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"}
$item=Get-ItemProperty $regPath | where {$_.DisplayName -like "*Mozilla Firefox*" -and $_.DisplayVersion -eq "38.3.0"}
Execute-Process -Path ($item.UninstallString -replace "`"", "") -Parameters "/S"
</uninstall>
<detection/>
</appdefinition>
Die Installation erfolgt über ein dynamisch erstelltes INI-File, dass einige Icons und den Maintenance Dienst deaktiviert.
ConfigMgr: MDT 2013 Update 1
Eine kurze Information: Seit gestern gibt es das Microsoft Deployment Toolkit (MDT) 2013 Update 1, das jetzt offiziell das ADK für Windows 10 unterstützt. Das ermöglicht jetzt die Verteilung und das Upgrade von Windows 10 mit einer Release Version von MDT.
Weitere Informationen sind in diesem Blog Artikel zu finden:
http://blogs.technet.com/b/msdeployment/archive/2015/08/17/mdt-2013-update-1-now-available.aspx
ConfigMgr: Adobe Reader 2015 Classic bereitstellen
Die 2015er Version von Adobe Reader ist ist aufgeteilt in eine continuous und classic Variante. Die continuous Version ist eher für weniger zentral strukturierte Umgebungen vorgesehen, da sie ähnlich wie Cloud Software ständig aktualisiert. Die classic Variante wird wie gehabt weiterhin Quartalsweise aktualisiert.
Eine kurze Gegenüberstellung ist hier zu finden:
http://www.adobe.com/devnet-docs/acrobatetk/tools/AdminGuide/whatsnewdc.html#continuous-vs-classic-comparison
In dieser Beschreibung werde ich auf die classic Variante eingehen. Sie ist über die Adobe Webseite herunterladbar. Dazu lädt man zuerst die Basis Version unter ftp://ftp.adobe.com/pub/adobe/reader/win/Acrobat2015/1500630033/ herunter. Diese kann man mit der Kommandozeile
ConfigMgr: VLC 2.2.1 bereitstellen
VLC Media Player ist aktuell in der Version 2.2.1 verfügbar. Die angepasste appdeployment.xml, die zusätzlich das Icon auf dem Desktop entfernt ist nachfolgend aufgeführt:
<appdefinition>
<file>vlc-2.2.1-win32.exe</file>
<hash type="SHA256">2EAA3881B01A2464D2A155AD49CC78162571DECECCEF555400666C719A60794D</hash>
<info>
<company>VideoLAN</company>
<productName>VLC media player</productName>
<productVersion>2.2.1</productVersion>
<setupType>NSIS</setupType>
<isX86>true</isX86>
<hasUninstall>true</hasUninstall>
</info>
<install>
Show-InstallationProgress -StatusMessage "Installing $appName $appVersion. This may take some time. Please wait..."
Execute-Process -Path "vlc-2.2.1-win32.exe" -Parameters "/S" -WindowStyle Hidden
$icon=join-path (join-path $env:public "Desktop") "VLC media player.lnk"
if (test-path $icon) {
Show-InstallationProgress -StatusMessage "Removing desktop icon."
remove-item -path $icon -force
}
</install>
<uninstall/>
<detection/>
</appdefinition>