ConfigMgr: Java 8 Update 101
Anbei das aktualisierte Installationsscript für Java 8u101:
<appdefinition>
<file>jre-8u101-windows-i586.exe</file>
<hash type="SHA256">8FAC3FBB9E854BCEE12049430E9EF67188C6389B46C67120E873CDF173B3C3B9</hash>
<info>
<setupType>InnoSetup</setupType>
<isX86>true</isX86>
<company>Oracle Corporation</company>
<productName>Java 8 Update 101</productName>
<msiProductCode>{26A24AE4-039D-4CA4-87B4-2F32180101F0}</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-8u101-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-2F32180101F0}"
</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-2F32180101F0}" -and $_.DisplayVersion -eq "8.0.1010.13" -and $_.WindowsInstaller -eq 1}
</detection>
<dependency>
</dependency>
<supersedence>
<deploymentType uninstall="true" type="SHA256">67C9594D2A51D6B1B52CC57CD7E1B320B491207C3680F811354185B71ED4D832</deploymentType>
<deploymentType uninstall="true" type="SHA256">8371F27009A9286CAC0D9812E0411DDBFCB106456E46FFEC50E64054E75E4632</deploymentType>
<deploymentType uninstall="true" type="SHA256">E4E54109C3FB40A36457B4EAC5C53D667A9969826EB16157B0DC4A2D3DCEAC23</deploymentType>
<deploymentType uninstall="true" type="SHA256">41F1887CBC9446720B26F51B9EDD6034D535A2F844A6E37646333F7799F35809</deploymentType>
<deploymentType uninstall="true" type="SHA256">3CC0BE2A34F0989692C30F2CACB89CACFCA7159570D5FC8C1B1498C60CBC07FB</deploymentType><!--71-->
</supersedence>
</appdefinition>
ConfigMgr: Firefox 45.3.0 ESR verteilen
Mit folgender XML Datei kann Firefox in der Version 45.3.0 ESR verteilt werden. Dabei werden automatisch ältere Versionen “supersedet”. Vorausgesetzt diese wurden auch mittels AutomateAppDeployment bereitgestellt.
<appdefinition>
<file>Firefox Setup 45.3.0esr.exe</file>
<hash type="SHA256">02FDEA888951BA9FA5740861C27A815C58151F3B64EF03E9E374AF465F20B9D7</hash>
<info>
<company>Mozilla Corporation</company>
<productName>Mozilla Firefox</productName>
<productversion>45.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 45.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 "45.3.0"}
Execute-Process -Path ($item.UninstallString -replace "`"", "") -Parameters "/S"
</uninstall>
<detection/>
<dependency/>
<supersedence>
<deploymentType uninstall="false" type="SHA256">8CA1EC61B9DF30DDCEF3E7CE5234C2BEF6EC7C9C3A4B51F57C67FC9E8822E7FB</deploymentType><!--38.2.0-->
<deploymentType uninstall="false" type="SHA256">40DC3DF8C548819733386B70791DB753793E98C5F08283001D851A204376F017</deploymentType><!--38.2.1-->
<deploymentType uninstall="false" type="SHA256">FDC5BAA6033918E7FE8018DE130F16A23896B623B0B4F60A8EA578759C2DD29C</deploymentType><!--38.6.0-->
<deploymentType uninstall="false" type="SHA256">771A00786C69F7290A25C495A03622B4616C21D6A062BC712F55E0AE0282C219</deploymentType><!--38.6.1-->
<deploymentType uninstall="false" type="SHA256">85B1438D427FB6C9A52415BF46239AD491FD30EA410698ECDE256D0BC9AE7DB4</deploymentType><!--45.0.0-->
<deploymentType uninstall="false" type="SHA256">4477B833266C0ED9306AFC8347A547C1D27AB854C0438BC353A943C00774CAFD</deploymentType><!--45.0.1-->
<deploymentType uninstall="false" type="SHA256">CA99927AA526C7C002C137337BFA0A1CB2C9118F8C7568F1F3B5C6DCDBAEEE08</deploymentType><!--45.2.0-->
</supersedence>
</appdefinition>
Cloud Proxy mit ConfigMgr TP 1607 einrichten
Cloud Proxy ist eine neue Funktion in 1606 Technical Preview, die mobilen Geräten eine einfache Verbindung zum ConfigMgr ermöglicht. Dabei ist On-Premise keine DMZ notwendig.
Der Cloud Proxy wird durch den ConfigMgr selber installiert. Dazu muss der Server auf das entsprechende Azure Konto zugreifen können. Klassisch und auch in diesem Fall erfolgt dies über ein Management Zertifikat. Der Public Key dieses Schlüssels wird in Azure hochgeladen und jeder mit dem Privat Key kann administrativ auf das Konto zugreifen.
Managementzertifikat erstellen
ConfigMgr: TortoiseSVN 1.9.4 verteilen
Hier das minimalistische Script für TortoiseSVN 1.9.4:
<appdefinition> <file>TortoiseSVN-1.9.4.27285-x64-svn-1.9.4.msi</file> <hash type="SHA256">7CAD40E63FF5400483F853642477AD17C88177A530C053EA307243E17C6192DC</hash> <info> <setupType>MSI</setupType> <isX86>false</isX86> </info> <install/> <uninstall/> <detection/> <dependency/> <supersedence> <deploymentType uninstall="false" type="SHA256">0D3894C8B0E6F116C34408E87C645757E9B568ABCCE3C9FCEA42076FA7A01293</deploymentType><!--TortoiseSVN-1.8.11.26392-x64-svn-1.8.13.msi--> <deploymentType uninstall="false" type="SHA256">5059209B24972D978E80AFCAC1721AAFB560C42C59ED193689EEE23563D23850</deploymentType><!--TortoiseSVN-1.9.3--> </supersedence> </appdefinition>
ConfigMgr: Firefox ESR 45.2.0 verteilen
Firefox ESR gibt es aktuell in der Version 45.2.0. Für das Update (inkl. Supersedence) habe ich unten das passende Script angehängt.
Download unter: https://www.mozilla.org/en-US/firefox/organizations/all/
<appdefinition>
<file>Firefox Setup 45.2.0esr.exe</file>
<hash type="SHA256">CA99927AA526C7C002C137337BFA0A1CB2C9118F8C7568F1F3B5C6DCDBAEEE08</hash>
<info>
<company>Mozilla Corporation</company>
<productName>Mozilla Firefox</productName>
<productversion>45.2.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 45.2.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 "45.2.0"}
Execute-Process -Path ($item.UninstallString -replace "`"", "") -Parameters "/S"
</uninstall>
<detection/>
<dependency/>
<supersedence>
<deploymentType uninstall="false" type="SHA256">8CA1EC61B9DF30DDCEF3E7CE5234C2BEF6EC7C9C3A4B51F57C67FC9E8822E7FB</deploymentType><!--38.2.0-->
<deploymentType uninstall="false" type="SHA256">40DC3DF8C548819733386B70791DB753793E98C5F08283001D851A204376F017</deploymentType><!--38.2.1-->
<deploymentType uninstall="false" type="SHA256">FDC5BAA6033918E7FE8018DE130F16A23896B623B0B4F60A8EA578759C2DD29C</deploymentType><!--38.6.0-->
<deploymentType uninstall="false" type="SHA256">771A00786C69F7290A25C495A03622B4616C21D6A062BC712F55E0AE0282C219</deploymentType><!--38.6.1-->
<deploymentType uninstall="false" type="SHA256">85B1438D427FB6C9A52415BF46239AD491FD30EA410698ECDE256D0BC9AE7DB4</deploymentType><!--45.0.0-->
<deploymentType uninstall="false" type="SHA256">4477B833266C0ED9306AFC8347A547C1D27AB854C0438BC353A943C00774CAFD</deploymentType><!--45.0.1-->
</supersedence>
</appdefinition>
Mögliche Probleme mit MS16-072
Kurze Warnung: Das aktuelle Security Update MS16-072 kann dazu führen, dass Benutzer-GPOs nicht mehr angewendet werden, wenn die Authentificated User die GPO nicht mehr lesen können, da die Gruppenrichtlinien nicht mehr im Benutzer sondern im Computerkontext gelesen werden und somit bei einer Lese-Einschränkung auf eine Benutzergruppe das Computerobjekt keine Rechte hat.
Ich habe es bei meinen eingeschränkten GPOs immer versucht zu vermeiden (es reicht den authent. Users das Apply Recht zu nehmen), aber ich weiss, dass einige Firmen diese “falsche” Einstellung so umgesetzt haben. Daher diese kurze Warnung von mir :)
Windows Server 2016 TP5 verfügbar!
Seit einigen Stunden ist die neue Beta-Version zu TP5 verfügbar.
Daher ein paar Links dazu:
Download u.a. über folgende Landing Page:
Windows Server 2016 Product Page (oder MSDN…)
https://www.microsoft.com/en-us/server-cloud/products/windows-server-2016/
Und neue Videos auf Channel9 zu den neuen TP5 Funktionen:
https://channel9.msdn.com/Blogs/windowsserver
Und noch ein kostenloses E-Book (auf den ersten Blick sehe ich aber noch keine Referenzen auf TP5):
Software Update Baselines
Automatic Deployment Rules (ADR) sind bei der Verteilung von Updates hilfreich, da sie automatisiert für jeden Monat (oder häufiger) neue Software Update Gruppen anlegen können, die nur die benötigten Updates beinhalten und somit die Gruppengrößen klein halten. Eine entsprechende Strategie habe ich bereits 2014 beschrieben. Kommt aber ein Client nach längerer Zeit wieder ans Netz, dann fehlen u.U. in den aktuellen Gruppen notwendige Updates, die erst bei der nächsten automatischen Regelabarbeitung wieder heruntergeladen werden müssen.
Acrobat Reader 2015 Build 30121
Auch der Acrobat Reader in der 2015 Version (nicht die “Cloud” Variante DC) wurde auf Build 30121 aktualisiert. Dafür stellt Adobe eine passende Patch-Datei (MSP) bereit. Dieses Verteilscript setzt somit auf die vollständige Version von Adobe Reader 2015 auf (=dependency) und ersetzt den alten Build 30119 (=supersedence). Es zeigt somit alle drei Neuerungen in der aktuellen automateAppDeployment Version: Dependeny, Supersedence und MSP.
<appdefinition>
<file>AcroRdr2015Upd1500630121_MUI.msp</file>
<hash type="SHA256">345351B04EE45E85194126AE0884A0B8AAC5DCEDA34D42AB18F3E6413C8D41F9</hash>
<info fromFile="true">
<company>Adobe Systems Incorporated</company>
<productName>Adobe Reader 2015</productName>
<productVersion>15.006.30121</productVersion>
<setupType>MSP</setupType>
<isX86>true</isX86>
</info>
<install fromSetupType="false">
Execute-MSI -Action Patch -Path "AcroRdr2015Upd1500630121_MUI.msp" -Parameters "REBOOT=ReallySuppress /qn"
#disable arm
$regPrefix="HKEY_LOCAL_MACHINE\SOFTWARE\"
if ($is64Bit) {
$regPrefix="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\"
}
set-registryKey -Key ($regPrefix+"Adobe\Adobe ARM\1.0\ARM") -Name "iCheckReader" -value 0 -Type "DWord"
#remove run key
$runKey="HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
$run=Get-Item $runKey
$runValue="Adobe ARM"
if ($run.GetValue($runValue,$null)) {
remove-itemProperty -Path $runKey -Name $runValue
}
if ($is64Bit) {
$runKey="HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run"
$run=Get-Item $runKey
if ($run.GetValue($runValue,$null)) {
remove-itemProperty -Path $runKey -Name $runValue
}
}
#disable online features
#http://www.adobe.com/devnet-docs/acrobatetk/tools/PrefRef/Windows/FeatureLockdown.html
#new: http://www.adobe.com/devnet-docs/acrobatetk/tools/AdminGuide/services.html
$regPath=($regPrefix+"Policies\Adobe\Acrobat Reader\2015\FeatureLockDown")
set-registryKey -Key $regPath -Name "bUsageMeasurement" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bShowEbookMenu" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bShowEbookMenu" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bCommercialPDF" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bUpdater" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bCreatePDFOnline" -value 0 -Type "DWord"
set-registryKey -Key $regPath -Name "bPurchaseAcro" -value 0 -Type "DWord"
#Specifies whether to show the menu item that opens the online Actions file library.
set-registryKey -Key $regPath -Name "bFindMoreWorkflowsOnline" -value 0 -Type "DWord"
#Specifies whether to show the menu item that opens the online Acrobat Tool Set Exchange.
set-registryKey -Key $regPath -Name "bFindMoreCustomizationsOnline" -value 0 -Type "DWord"
#This bEnableAcrobatHS service master switch disables all features of the Fill and Sign Pane except for the Work with Certificates accordion. When forms are opened, the Fill and Sign Pane does not auto open.
set-registryKey -Key $regPath -Name "bEnableAcrobatHS" -value 0 -Type "DWord"
#Don't allow file storage on Acrobat.com.
set-registryKey -Key ($regPath+"\cCloud") -Name "bDisableADCFileStore" -value 1 -Type "DWord"
#disable protected mode...
set-registryKey -Key $regPath -Name "bProtectedMode" -value 0 -Type "DWord"
</install>
<uninstall/>
<detection/>
<dependency>
<dependencyGroup name="Acrobat Reader 2015">
<application autoInstall="true" type="SHA256">2C374210AF21AE7ABAA4A5DE12B2C9A84E4942E94167B95E218FF27D072AB8BC</application>
</dependencyGroup>
</dependency>
<supersedence>
<deploymentType uninstall="false" type="SHA256">934A4DB4EFE7B825378177BDED26D889A27B19D3A0AD06D2D37A93896B1FF326</deploymentType><!--Build 30119-->
</supersedence>
</appdefinition>
ConfigMgr: Firefox ESR 45.0.1 verteilen
Im Rahmen des erweiterten Releasezyklus von Firefox ESR war jetzt wieder ein Versionssprung von 38 auf 45 dran. Dies bedeutet für die Anwender eine angepasste Oberfläche. Für das Upgrade (inkl. Supersedence) habe ich unten das passende Script angehängt.
Download unter: https://www.mozilla.org/en-US/firefox/organizations/all/
<appdefinition>
<file>Firefox Setup 45.0.1esr.exe</file>
<hash type="SHA256">4477B833266C0ED9306AFC8347A547C1D27AB854C0438BC353A943C00774CAFD</hash>
<info>
<company>Mozilla Corporation</company>
<productName>Mozilla Firefox</productName>
<productversion>45.0.1</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 45.0.1esr.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 "45.0.1"}
Execute-Process -Path ($item.UninstallString -replace "`"", "") -Parameters "/S"
</uninstall>
<detection/>
<dependency/>
<supersedence>
<deploymentType uninstall="false" type="SHA256">8CA1EC61B9DF30DDCEF3E7CE5234C2BEF6EC7C9C3A4B51F57C67FC9E8822E7FB</deploymentType><!--38.2.0-->
<deploymentType uninstall="false" type="SHA256">40DC3DF8C548819733386B70791DB753793E98C5F08283001D851A204376F017</deploymentType><!--38.2.1-->
<deploymentType uninstall="false" type="SHA256">FDC5BAA6033918E7FE8018DE130F16A23896B623B0B4F60A8EA578759C2DD29C</deploymentType><!--38.6.0-->
<deploymentType uninstall="false" type="SHA256">771A00786C69F7290A25C495A03622B4616C21D6A062BC712F55E0AE0282C219</deploymentType><!--38.6.1-->
<deploymentType uninstall="false" type="SHA256">85B1438D427FB6C9A52415BF46239AD491FD30EA410698ECDE256D0BC9AE7DB4</deploymentType><!--45.0.0-->
</supersedence>
</appdefinition>