Heute in der Firma zusammengetippt, getestet, läuft bisher an 2 Test-PCs und wird in naher Zukunft verteilt.
Für alle, die es interessiert und natürlich für hilfreiches Feedback, was man verbessern könnte.

Mein .NET Framework 4.5 Deployment Batch Script:

Color 9f
@echo on
title Installiere .NET Framework 4.5...
setlocal

:: dotnet45-installer.bat
:: Installiert .NET Framework 4.5 silent mit Logging
:: Hannes Schurig	- 11.09.2012
:: Letzte Änderung	- Version 0.4 am 11.09.2012

set wd=\\server\dotNET_Framework\45
set log=\\server\dotNET_Framework\45\log.txt

:checkversion
REM prüfe ob .NET 4.5 schon installiert ist
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" /v "Version"^|findstr "Version"') do set netversion=%%c
if not %netversion:~0,3%==4.5 goto install
echo %date% %time:~0,5% - %computername% hat schon >> %log%
goto end

:install
%wd%\dotnetfx45_full_x86_x64.exe /passive /log "%wd%\logs\%computername%.txt" /norestart
set netinstallerrlvl=%errorlevel%
if not %netinstallerrlvl%==0 goto fehler

:checkinstallation
REM überprüfe ob die Installation erfolgreich war
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" /v "Version"^|findstr "Version"') do set newnetversion=%%c
if not %newnetversion:~0,3%==4.5 set netinstallerrlvl=99 & goto fehler
if %newnetversion:~0,3%==4.5 echo %date% %time:~0,5% - %computername% hat erfolgreich Version %netversion% installiert >> %log%
goto end

:fehler
REM Return Codes: http://msdn.microsoft.com/en-us/library/ee942965.aspx
if %netinstallerrlvl%==1602 echo echo %date% %time:~0,5% - %computername% FEHLER: Benutzer hat die Installation abgebrochen >> %log%
if %netinstallerrlvl%==1603 echo echo %date% %time:~0,5% - %computername% FEHLER: Ein fataler Installationsfehler ist aufgetreten >> %log%
if %netinstallerrlvl%==1641 echo echo %date% %time:~0,5% - %computername% HINWEIS: Installation erfolgreich aber Neustart notwendig >> %log%
if %netinstallerrlvl%==3010 echo echo %date% %time:~0,5% - %computername% HINWEIS: Installation erfolgreich aber Neustart notwendig >> %log%
if %netinstallerrlvl%==5100 echo echo %date% %time:~0,5% - %computername% FEHLER: Das System entspricht nicht den Anforderungen >> %log%
if %netinstallerrlvl%==99 echo echo %date% %time:~0,5% - %computername% FEHLER: Installationserrorlevel 0 aber erneute Registryprüfung gibt nicht Version 4.5 zurück. Ungewöhnlicher Fall, Überprüfung notwendig >> %log%
goto end

:end
endlocal

Ausgabe in der log.txt ist dann sowas:
11.09.2012 16:40 – IQB177 hat erfolgreich Version 4.5.50709 installiert

Ich benutze momentan noch den Parameter

/passive

, welcher zwar eine GUI anzeigt aber keine Nutzerinteraktion zulässt. Dadurch erfährt aber der Benutzer zumindest den aktuellen Status und Fortschritt der Installation. Vielleicht wechsel ich noch zu

/q

, wo keinerlei GUI zu sehen ist, absolut unsichtbar.

via: .NET Versionsnummern, .NET Framework 4 Deployment, .NET Framework 4 Allgemein

Praktisch auf (indirekter) Anfrage:
Ziel: Anzahl der Ordner und Dateien eines Ordners zählen und verarbeiten

Diese Batch zählt Dateien und Ordner des Ordners, in dem sie sich befindet:

set /A dateien=0
set /A ordner=0
for /F %%i in ('dir /B /A-d') do set /A dateien=dateien+1
for /F %%i in ('dir /B /Ad') do set /A ordner=ordner+1
echo %dateien% Dateien und %ordner% Ordner

Ziemlich einfach.
Dateien/Ordner zählen premium: Nun erweitere ich den Grundaufbau und bastel ein Batch, die per Parameter auch noch einen Ordner entgegennimmt, der verarbeitet werden soll. Der Ordner kann beim Aufruf eingegeben werden oder man zieht einfach im Explorer einen Ordner auf die Batch Datei. Sollte der übergebene Pfad nicht schon in Anführungszeichen stehen wird er in Anführungszeichen gepackt. Wird kein Ordner als Parameter angegeben wird wieder der Ordner, in dem die Batch Datei liegt, genutzt.

@echo off
setlocal
set /A dateien=0
set /A ordner=0
set path=%~1
if (%path%)==() set path=%~dp0
set first=%path:~0,1%
set last=%path:~-1%
if not (%first%)==(^") set path=^"%path%
if not (%last%)==(^") set path=%path%"
for /F %%i in ('dir %path% /B /A-d') do set /A dateien=dateien+1
for /F %%i in ('dir %path% /B /Ad') do set /A ordner=ordner+1
echo %dateien% Dateien und %ordner% Ordner
endlocal

Kurze Codebeschreibung: Pfad auf den Parameter setzen, wenn Pfad nicht gesetzt auf den aktuellen Ordner setzen. Erstes und letztes Zeichen speichern. Beide überprüfen; wenn kein Anführungszeichen dann eins setzen. Anführungszeichen werden hier mit dem ^ Zeichen escaped. Pfad an die Zählroutinen übergeben.

Eine Frage stellt sich mir aber: Ich musste jedes Anführungszeichen escapen bis auf eins: Zeile 10 ganz am Ende. Wird dort das Anführungszeichen escaped dann funktioniert das Programm nicht mehr. Kann mir jemand sagen warum?

via: Dateien/Ordner zählen, Stringkrams, Hochkomma (Anführungszeichen) in Batch escapen

Mal als Hinweis falls jemand auf diesen Windows Installer Fehler trifft:

There was an error creating a temporary file that is needed to complete this installation. Folder: [3]. System error code: [2]

Passierte mir beim Slipstreamen von Patches in eine AIP Installation von Acrobat X Pro direkt auf einem Netzlaufwerk.

Im Netz gibt es einige Lösungsansätze: Nutzer Temp Verzeichnis löschen (Start -> Ausführen -> %temp%), Papierkorb leeren, Deinstallieren und „Als Administrator“ neu installieren usw.

Mag ja in einigen Fällen helfen aber bei mir gabs nur eine Lösung:
AIPs nicht direkt auf Netzlaufwerken erstellen und Patches slipstreamen! Das führt anscheinend nur zu Problemen. Lokal funktionierte alles einwandfrei.

Also:

:: Eigene Acrobat Anpassung mit dem Customization Wizard X erstellen
:: Acrobat X AIP mit eigener Veränderung .mst lokal installieren
msiexec /a "AcroPro.msi" /t "AcroPro.mst" TARGETDIR="C:\AcrobatXPro"
:: den aktuellsten Patch slipstreamen
msiexec /a "C:\AcrobatXPro\AcroPro.msi" /p "AcrobatUpd1013.msp"
:: aufs Netzlaufwerk kopieren und via GPO verteilen

und dann das Verzeichnis so auf das Netzlaufwerk kopieren, MSI in die GPO, MST in die Veränderung, fertsch.

Windows Aktivierung bzw. Lizenzverwaltung mit dem slmgr.vbs Tool: einfach, effektiv, Batch-fähig.
Aber auch hier gibt es Tücken, wie immer. Die Parameteroptionen des Tools sind abhängig von der installierten Windows Version und dem momentan genutzten Key.
Bei der lizenzkeyfreien Version des Server 2008 Enterprise (Installation ohne Angabe des Lizenzkeys) fehlt beispielsweise die Option -skms, die benötigt wird um Informationen zu einem KMS Server einzugeben, bevor man sich dort einen validen Key zieht.

Um alle slmgr.vbs Parameter zu erhalten muss man Windows erst von der lizenzkeyfreien Version auf eine gültige Version mit Key umstellen.
Eine Übersicht gültiger Keys gibt es hier in der Antwort von MrFrankieG. Sucht euch den passenden Key zu eurem installierten Server System und aktiviert das System damit.

Danach in der Admin CMD nacheinander:

net stop slsvc
net start slsvc

Nun müssten alle slmgr Optionen verfügbar sein.

Mich beschäftigte heute kurz der Windows Update Fehler 8024402C unter Windows 7.
Er wird im Internet entweder an WSUS Problemen oder Netzwerkproblemen festgemacht. Ist der WSUS Server aktiv, sind die Netzwerkeinstellungen korrekt, kann man den WSUS von dem Rechner aus pingen?

Ich konnte den Fehler mit dem Löschen (vorher sichern!) des folgenden Registry Keys beheben:

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate

Wenn ihr einen WSUS nutzt (oder andere Windows Update bezogene GPO Einstellungen) solltet ihr direkt danach ein

gpupdate /force

abfeuern.
Danach ein Neustart und der Fehler sollte erledigt sein.

Die Gruppenrichtlinie und der WSUS sorgten dafür, dass der Schlüssel (korrekt) neu erstellt wurde und damit war das Problem wohl behoben.

via

Weitere Windows Update Fehler und ihre Lösung findet ihr hier.

Problem: Nach der Anmeldung wird kein Benutzerprofilordner angelegt, statt dessen bewegt man sich in C:\Users\Public oder C:\Users\TEMP während man eingeloggt ist. Nach dem Logout werden diese temporären Daten gelöscht. Dadurch werden z.B. nie benutzerspezifische Einstellungen gespeichert.

Lösung: Ab in die Registry:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\[S-ID]
Durchsucht alle SIDs und schaut jeweils auf den „ProfileImagePath“. Löscht alle Schlüssel des Benutzernamens, der Probleme macht.

Dann, neustarten! (wichtig!)

Danach müsste der Login normal funktionieren und ein Profilordner erstellt worden sein.

„Prozesspriorität“. Dieser Begriff ist für mich seit Anbeginn meiner Windows Zeit ein Rätsel.
Im Taskmanager kann man diese Priorität einstellen.
Jedoch, was macht sie genau? Macht die Einstellung überhaupt etwas?

Ich habe mir einen kleinen Test erlaubt. In Photoshop habe ich 3 Tests laufen lassen, jeweils mit Photoshop mit „Echtzeit“- und „Niedrig“-Priorität, jeweils 3 Messungen gemacht und einen Durchschnitt der Dauer berechnet. Neben den Photoshop Tests liefen Medien im KMPlayer und WinRAR entpackte ein riesiges Archiv, um Photoshop die Möglichkeit zu geben mit einer hohen Priorität tatsächlich andere Prozesse „wegzustoßen“.

Details:
Photoshop -> ich erstelle ein leeres 400cm x 400cm 16bit Bild, ungefähre Größe: 735MB.

TestEchtzeitNiedrig
Test 1: Bild füllen mit weißer Farbe 2,4s 2,5s
Test 2: Schwarz-Weiß-Verlauf von oben nach unten 2,6s 2,8s
Test 3: Schwarfzeichnungsfilter -> Konturen scharfzeichnen 8,7s 8,8s

Was macht diese Einstellung nun? Weiß es jemand?
Oder ist es vielleicht wie die Defragmentierung bei WinXP/Win7; früher musste man defragmentieren, Windows 7 macht es von allein.