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

Posted in Configuration Manager, Deutsch, System Center | Tagged , , , | Leave a comment

Bootzeit- und Gruppenrichtlinienperformance

Je nach Komplexität der Gruppenrichtlinien können diese den Bootvorgang stark beeinflussen. Besonders deutlich wird dies, wenn Netzwerklaufwerke verbunden werden, die nicht mehr erreichbar sind. Dann verzögert sich die Abarbeitung bis zu eine Minute pro Laufwerk.

Daher ist es sinnvoll, die Abarbeitungszeiten pro Client Side Extension (CSE) auszuwerten. Dadurch ist sehr schnell sichtbar, in welchen Bereichen die meiste Zeit verbraucht wird.

Seit Vista (und ich denke keiner wird mehr Performanzmessungen an Windows XP Rechner vornehmen wollen) ist dies durch das Eventlog sehr einfach möglich. Die entsprechenden Daten liegen in den Anwendungslogs unter Microsoft/Windows/GroupPolicy/Operational und sind mit der Event ID 5016 gekennzeichnet.

Ein kleines Powershell Script ließt dieses Log remote aus und erstellt daraus eine CSV Datei, die mit etwas Pivot-Magie (Gruppiert nach CSE, Mittelwert über TimeInMilliSeconds) sehr schnell die Problembereiche darstellt:

 

$computer="localhost"
$events=get-winevent -Computer $computer -FilterHashTable @{LogName="Microsoft-Windows-GroupPolicy/Operational";Id=5016}
#basiert auf http://blogs.technet.com/b/ashleymcglone/archive/2013/08/28/powershell-get-winevent-xml-madness-getting-details-from-event-logs.aspx
ForEach ($Event in $Events) {            
    # Convert the event to XML            
    $eventXML = 1$Event.ToXml()            
    # Iterate through each one of the XML message properties            
    For ($i=0; $i -lt $eventXML.Event.EventData.Data.Count; $i++) {            
        # Append these as object properties            
        Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name  $eventXML.Event.EventData.Data[$i].name -Value $eventXML.Event.EventData.Data[$i].'#text'            
    }            
}   
$events | select TimeCreated,MachineName,CSEExtensionName,CSEElaspedTimeInMilliSeconds | Export-Csv ("c:\temp\cse-"+$computer+".csv")
Posted in Active Directory Domain Service, Deutsch, Powershell | Tagged , | Leave a comment

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

AcroRdr20151500630033_MUI.exe -nos_o"%temp%\ReaderDC" -nos_ne

Den Inhalt im Unterordner ReaderDC in seinem Temp Ordner kopiert man zusammen mit der appdefinition.xml und des aktuellen Patches von ftp://ftp.adobe.com/pub/adobe/reader/win/Acrobat2015/1500630060/ in einen Ordner und führt dann das AppDeployment Toolkit aus, um die entsprechenden Collections zu erzeugen.

An sich reicht es die MSI und das MSP zu installieren. Die hier vorgestellte Variante passt aber die Installation an, um internetbasierte Eigenschaften und automatische udpates abzuschalten.

Details zu den möglichen Einstellungen sind hier zu finden: http://www.adobe.com/devnet-docs/acrobatetk/tools/PrefRef/Windows/FeatureLockdown.html

<appdefinition>
<file>AcroRead.msi</file>
<hash>2C374210AF21AE7ABAA4A5DE12B2C9A84E4942E94167B95E218FF27D072AB8BC</hash>
<info fromFile="true">
<productName>Adobe Reader 2015</productName>
<productVersion>15.006.30060</productVersion>
<setupType>MSI</setupType>
<isX86>true</isX86>
</info>
<install fromSetupType="false">
Execute-MSI -Action Install -Path "AcroRead.msi" -Parameters "REBOOT=ReallySuppress  EULA_ACCEPT=YES SUPPRESS_APP_LAUNCH=YES DISABLE_ARM_SERVICE_INSTALL=1 DISABLEDESKTOPSHORTCUT=1 /QB"
Execute-MSI -Action Patch -Path "AcroRdr2015Upd1500630060_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/>
</appdefinition>
Posted in automateAppDeployment, Configuration Manager, Deutsch, Powershell, System Center, System Center 2012 | Tagged , , | Leave a comment

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>
Posted in automateAppDeployment, Configuration Manager, Powershell, System Center | Tagged | Leave a comment

ConfigMgr: 7-zip 15.05 Beta verteilen

Mit 7-Zip 15.05 Beta wurde ein neuer Installer verwendet, der ähnlich wie NSIS den /S Parameter akzeptiert, aber andere Einträge in der Registry erzeugt. Daher wurde die appdeployment.xml entsprechend angepasst.
Heruntergeladen kann die Version direkt unter http://www.7-zip.org/download.html

<appdefinition>
<file>7z1505-x64.exe</file>
<hash type="SHA256">6ABAF04E44C87BD109DF7485EB67A2D69A2E3E6E6DEB9DF59E5E707176C69449</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.05 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.05 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.05 beta*"}
</detection>
</appdefinition>
Posted in automateAppDeployment, Configuration Manager, System Center | Tagged , | Leave a comment