Long time no see, let’s go again!!

Bei einem Nutzer der Firma kommt es zu Netzwerkproblemen am PC; die Netzwerkverbindung übermittelt irgendwann einfach keine Pakete mehr oder ist anderweitig gestört. Das Internet ist also tot und der Nutzer müsste jetzt selbstständig eine Diagnose des Netzwerkadapters durchführen o.Ä.
Besser ist ein Script, welches die Internetverbindung bei Doppelklick repariert.

Variante 1 – Sehr einfach

Hier ist ein relativ einfaches Script für die oben beschriebene Situation:

ipconfig /release
ipconfig /renew

Dieses Script kann der Nutzer selbstständig ausführen und innerhalb weniger Sekunden ist die Internetverbindung erneuert.

Es soll aber vorkommen, dass diese einfache Lösung das Problem nicht löst. Dann solltet ihr mit den folgenden Varianten fortfahren.

Variante 2 – Standard

Dieser Code enthält einige Reparaturen mehr:

@echo off & setlocal
ipconfig /release
ipconfig /renew
arp -d *
nbtstat -R
nbtstat -RR
ipconfig /flushdns
ipconfig /registerdns
endlocal

arp -d *“ löscht die gesamte lokale ARP Tabelle, wodurch diese daraufhin neu erstellt wird. „nbtstat -R“ löscht die NetBT Tabelle und der Parameter -RR startet eine Aktualisierung der neu erstellten Tabelle. Und die letzten 2 Befehle löschen den DNS Cache und erstellen ihn neu.
Hier werden also verschiedene andere Problemstellen angegangen und die Wahrscheinlichkeit, das Netzwerkproblem damit zu beheben, ist etwas höher.
Jedoch benötigen all diese neuen Befehle Administratorrechte. Hier müsst ihr das Script also als Administrator ausführen (lassen). Wie das geht erfahrt ihr am Ende des Posts.

Variante 3 – Sehr ausführlich

Mit diesen Befehlen gebt ihr den Netzwerkproblemen die volle Ladung Reset:

@echo off
ipconfig /release
ipconfig /renew
arp -d *
nbtstat -R
nbtstat -RR
:: adjust interface name here and remove "rem"
rem netsh interface set interface "LAN-Verbindung" DISABLED DISCONNECTED
:: service names should work in both german and english windows
net stop "dhcp" /y
net stop "dnscache" /y
net stop "netman" /y
net start "dhcp" 
net start "dnscache" 
net start "netman" 
:: adjust interface name here and remove "rem"
rem netsh interface set interface "LAN-Verbindung" ENABLED CONNECTED
ipconfig /flushdns
ipconfig /registerdns

Hier werden zusätzlich einige Dienste neu gestartet und der Adapter (wenn ihr den Adapternamen einfügt und die Kommentierung entfernt) zurückgesetzt.
Natürlich werden auch hierfür Administratorrechte benötigt. Mehr dazu im nächsten Abschnitt.

Script als Administrator ausführen

Natürlich kann man das Script einfach als Administrator ausführen, wenn man die Rechte oder die Login Daten hat. Aber wir gehen mal davon aus, dass ein eingeschränkter Nutzer völlig unabhängig von euch diese Reparaturen zu jeder Zeit ausführen können muss.
Dafür gibt es einen relativ simplen Workaround über die Aufgabensteuerung.

Erstellt auf dem PC des Nutzers eine neue einfache Aufgabe in der Aufgabenplanung, wählt einen beliebigen Trigger (wird eh wieder gelöscht), als Aktion wählt ihr „Programm starten“ und sucht das lokal kopierte Reset Script von oben. Öffnet dann die Eigenschaften der Aufgabe, löscht den Trigger und wählt im „Allgemein“ Tab einen lokalen Administratorbenutzer aus. Aktiviert „Unabhängig von der Benutzeranmeldung ausführen“ und „Mit höchsten Privilegien ausführen“ und speichert die Änderungen. In diesem Moment werdet ihr nach dem Passwort zu dem ausgewählten Nutzer gefragt, gebt das ein. Danach habt ihr eine Aufgabe erstellt, die auf Bedarf ausgeführt werden kann und mit erhöhten Adminrechten das Script ausführt.

Nun müsst ihr noch dem Nutzer die Möglichkeit geben, diese Aufgabe – am besten einfach per Doppelklick – auszuführen. Merkt euch dazu den Namen der gerade erstellten Aufgabe und erstellt auf dem Desktop des Nutzers, oder wo auch immer das Script zum Starten des Netzwerk-Resets liegen soll, ein neues Batch Script mit dieser einen Zeile:

schtasks /run /tn "reset-network"

In die Anführungszeichen kommt natürlich der Name eurer Aufgabe.

Nun kann der Nutzer per Doppelklick dieses Scripts die Netzwerkerneuerung starten, selbst wenn er keine Administratorrechte hat.

Natürlich sind diese Scripte nur Workarounds und beheben vermutlich nicht die Ursache der Netzwerkstörung, um die ihr euch natürlich kümmern solltet. Aber es verschafft euch mehr Zeit fürs Troubleshooting (viel Erfolg dabei!) weil der Nutzers damit erstmal sehr selbstständig, schnell und einfach das Problem beheben kann.

Ich habe die Einrichtung dieses Workrounds nochmal als Video festgehalten:

via, via, via

Allgemeines

Anfang des Jahres habe ich mich schon einmal mit dem Windows Update Fehler 80072EE2 beschäftigen müssen. Dieser trat nur an einem Client des Unternehmens auf, alle anderen Clients arbeiteten einwandfrei mit dem WSUS zusammen. Den Fehler konnte ich damals nicht lösen und musste den PC letztendlich neu installieren.
Seit dem Umzug des WSUS Dienstes auf einen neuen Server kam dieser Fehler nun aber bei jedem Client. Der Fehler 80072EE2 hat also definitiv etwas mit einem fehlerhaft installierten oder konfigurierten WSUS Server zu tun.

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

Vorbereitung

Bevor ihr den WSUS Server bearbeitet, solltet ihr nochmal mit dem WSUS Check Script oder ähnlichen Tools an eurem Test-Client prüfen, ob alle Einstellungen richtig gesetzt sind.
Falls ja, sollte in eurer Registry unter HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate der Wert von „WUServer“ bzw. „WUStatusServer“ auf euren WSUS Server gesetzt sein, also „http://servername„. Ändert diese beiden Werte mal und hängt den Port 8530 an: „http://servername:8530“.
Anschließend könnt ihr direkt eine neue Update Suche starten und bekommt vermutlich einen anderen Fehler, evtl. den Fehler 800B0001. Auch dieser Fehler weist darauf hin, dass der WSUS Server noch nicht fertig installiert ist.

Lösung

In meinem Fall war die Lösung unerwartet einfach:

  1. Update/Fix KB2720211 (Info) auf dem WSUS Server installieren
  2. Stoppen des WWW Dienstes (services.msc -> „WWW-Publishingdienst“ oder CMD -> „net stop w3svc„)
  3. Stoppen des Update Dienstes (services.msc -> „Update Services“ oder CMD -> „net stop wsusservice„)
  4. Zurücksetzen des IIS Dienstes (CMD -> „iisreset“)
  5. Starten des Update Dienstes (services.msc -> „Update Services“ oder CMD -> „net start wsusservice„)
  6. (Starten des WWW Dienstes – müsste aber bereits vom IIS Reset gestartet worden sein (services.msc -> „WWW-Publishingdienst“ oder CMD -> „net start w3svc„))

Nach der Ausführung der Neustart-Befehle sollte der WSUS Server wieder laufen und relativ schnell die ersten Clientanmeldungen bekommen (je nach Anzahl der Clients im Netzwerk). Ein Serverneustart erspart euch die Befehle und ist auch empfohlen, aber nicht zwingend notwendig.

Hinweis: Stefan, ein Leser, hat mich per Mail darauf hingewiesen, dass bei ihm das Problem durch ein Netzwerkgerät – nämlich durch seinen Router – verursacht wurde. Durch die Verwendung der Offloading Funktion des Routers konnte er das Problem beheben. Schaut in seinen Blogartikel für mehr Infos.

Quellen: via, via, via, via, via, via

Vor längerer Zeit habe ich ja über die Website Monitoring Seite servercheck24.de geschrieben und den Dienst getestet. In diesem Test möchte ich auf den größeren Bruder serverguard24.de eingehen und die zusätzlichen Features testen. Denn serverguard24 bietet einige nette Erweiterungen.

Start, Registrierung, Übersicht

Hier gibt es nicht viel Neues zu sehen. Die Registrierung ist einfach und geht schnell. Einzig bei der Passworteingabe muss ich meckern; heutzutage sollten Passwörter von mindestens 6 Zeichen vorausgesetzt werden und ein Password-Strength-Meter gehört ebenfalls zum guten Ruf und ist leicht einzubauen.
serverguard24-de-test-vergleich-servercheck-signup
Es erfolgt im nächsten Schritt auch wieder die Eingabe der Mobilfunkdaten, damit die SMS Benachrichtigung genutzt werden kann.

Einfaches Uptime Monitoring

Wie auch bei servercheck24 ist eine einfache Seitenüberwachung via HTTP Request schnell eingerichtet und besonders leicht zu verwalten. Die Prüfhäufigkeit wird durch das gekaufte Paket bestimmt. An dieser Stelle bietet serverguard24 jedoch schon erste Erweiterungen. So lassen sich Wartungsintervalle angeben, zu denen keine Uptime Tests stattfinden sollen, weil diese sowieso fehlschlagen würden. Außerdem kann die geografische Region ausgewählt werden, von denen aus die Tests kommen sollen. Der eingerichtete Dienst lässt sich von hier aus auch direkt testen und als Belohnung für eine funktionierende Webseite das serverguard24 Qualitätssiegel einbauen, wenn man das möchte.
serverguard24-de-test-vergleich-servercheck-simple-http-monitoringserverguard24-de-test-vergleich-servercheck-simple-http-monitoring-smsserverguard24-de-test-vergleich-servercheck-simple-http-monitoring-new-features

Transaktionen

Ebenfalls ein zusätzliches Feature sind die Transaktionen. So bezeichnet werden eine Abfolge von Nutzeraktionen auf einer Webseite. Somit lassen sich komplexe Tests, sogar tief in eingeloggten Webseitenbereichen, durchführen.
Es gibt 2 verschiedene Typen von Transaktionen: echte Browser Transaktionen und Request-Transaktionen. Letztere sind relativ typische, modifizierte GET/POST Serveranfragen, die mit verschiedensten HTTP Parametern versehen werden können und damit auch sehr gezielte Tests ermöglichen, wenn die Seite daraufhin programmiert wurde.
Besonders interessant sind jedoch die User-/Browser-Transaktionen, die echtes Userverhalten in einem Browser simulieren können.
Dazu muss auf dem PC – es muss ein Windows PC sein – eine Software namens „ServerGuard24 Transaction Manager“ installiert werden, mit der einmalig diese User-Aktion aufgezeichnet wird:
serverguard24-de-test-vergleich-servercheck-transactions-software
Die Software hat quasi ein Internet Explorer (Version 7 oder 8?) verbaut und überwacht sämtliche Aktionen, die darin gemacht werden. Außerdem lassen sich Pausen, Prüfungen, Wartekonditionen und Parser mit verschiedensten Optionen einbauen. Formulareingaben werden ebenso überwacht wie Klicks auf bestimmte Elemente.
Nachträglich kann diese Abfolge von Browserereignissen kann dann direkt in das serverguard24 Profil gespeichert und getestet werden:
serverguard24-de-test-vergleich-servercheck-transactions-test
An dieser Stelle ist jedoch Kritik nötig: das ganze ist relativ buggy und unhandlich. Der in dieser Software verbaute Browser scheint uralt zu sein (wie gesagt, vermutlich IE 7 oder 8) und verursacht dadurch starke Darstellungsprobleme auf Webseiten, die nicht für diese alten Browser optimiert wurden. Bestimmte Tests sind dadurch vielleicht schon gar nicht mehr möglich. Erstellte Schritte können nicht verschoben werden. Klicks werden nur selten erkannt, vor allem Linkklicks, die auf neue URLs führen, scheinen oftmals nicht als User-Schritt anerkannt zu werden. Zusätzlich stürzte die Software bei meiner ersten Nutzung komplett ab. Und zwar mehrfach, einfach nur indem ich die Software ein paar Minuten lang laufen ließ, ohne sie anzufassen; irgendwann stürzt sie ab. Also die Bedienerfreundlichkeit, Zuverlässigkeit und Stabilität sind hier eher mau.

Android App

Darauf habe ich mich besonders gefreut: mobile Überwachung! Wenn etwas bei Serverüberwachung wichtig ist, dann vor allem immer und von überall via Smartphone die Kontrolle zu haben. Ergebnisse einsehen, Tests auswerten, Dienste aktivieren und deaktivieren, via App, sehr gut. Und genau das bietet die ServerGuard24 Android App auch. Die Bedienung ist sehr einfach und die Visualisierung ziemlich gut. Alle Informationen sind übersichtlich dargestellt und mit Farben und Icons verdeutlicht.
serverguard24-de-test-vergleich-servercheck-android-app-store serverguard24-de-test-vergleich-servercheck-android-app-servers

serverguard24-de-test-vergleich-servercheck-android-app-server-report serverguard24-de-test-vergleich-servercheck-android-app-server-service-details

Einziger Wermutstropfen: die Einstellungen der Tests können nur angezeigt und nicht bearbeitet werden.

Fazit

ServerGuard24 bietet alle wichtigen Funktionen für eine Überwachung der eigenen Server und Webseiten. Zusätzliche können Webmaster mit dem nötigen Wissen sehr umfangreiche Tests bauen und damit die Stabilität der Webseite und einzelner Features bis auf die digitalen Nieren prüfen lassen. Etliche Benachrichtigungsoptionen, vor allem Notfall-SMS, kombiniert mit der Überwachungs-Android-App sorgen dafür, dass man im Falle einer Störung innerhalb kürzester Zeit Bescheid weiß und aktiv werden kann.
Wie auch bei ServerCheck24 braucht es hier eigentlich nur noch kleinere Optimierungen in den einzelnen Features, um diese noch etwas stabiler und benutzerfreundlicher zu gestalten.
Aber das Gesamtpaket kann überzeugen!

Ich traf heute auf ein spezielles Problem in Excel 2007.

Einleitung – Bilder in Excel

Beim Kopieren von Inhalten mit Bildern nach Excel, zum Beispiel Tabellen mit Icons von einer Webseite, werden Textinhalte und Bilder in Excel eingefügt.
Der Inhalt wird als Zelleninhalt eingefügt, die Bilder werden separat und einzeln als Objekte eingefügt.
Bei einer Tabellen mit vielen kleinen Icons können dadurch in einem Dokument schnell hunderte Bild-Objekte entstehen, oder aber viele größere Bilder.
bilder-in-excel-step1

Hier also bereits aufpassen, dass sich das Dokument nicht zu sehr aufbläht.
Abhilfe: Wenn ihr die Bilder nicht braucht, fügt die Daten als Text-only ein, ohne Bilder. Das geht beispielsweise über Rechtsklick -> Inhalte einfügen… -> Nur Text.
Alternativ kann bereits auf der Webseite nur der Text ohne Bilder kopiert werden, beispielsweise mit entsprechenden Browser Erweiterungen wie „Copy Plain Text“ für Chrome.

Das Problem

Beim Überschreiben der Zellen werden nicht die Bild-Objekte überschrieben oder gelöscht. Die Zelleninhalte werden überschrieben, die alten Bild-Objekte jedoch nicht; diese verschwinden nur hinter den neuen Inhalten und Icons, werden also verdeckt.
bilder-in-excel-step1bilder-in-excel-step2-ueberschreibenbilder-in-excel-step3-bilder

Links: Inhalte mit Grafiken eingefügt, Mitte: Neue Inhalte mit anderen Grafiken (aber selbe Position und Größe) eingefügt. Es sieht so aus, als wenn die Inhalte komplett überschrieben wurden. Aber: Rechts: Obersten Bilder verschoben, die alten Bilder sind noch darunter.

Wenn eine Tabelle mit 100 Icons oder eine Webseite mit etlichen Thumbnails mit neuen Inhalten überschrieben wird – die neuen Bilder befinden sich dabei jedoch an der selben Stelle und haben die selbe Größe -, werden die alten Bilder verdeckt aber es befinden sich nun doppelt so viele Icons/Bilder in der Tabelle.
Mit jedem Mal Überschreiben enthält das Dokument mehr Bild-Objekte und wird immer größer. Irgendwann wird Excel extrem langsam oder verweigert komplett jegliche Aktion und Interaktion.

Lösung

Eine Lösung steht oben schon: entweder Inhalte einfügen als „Nur Text“, ohne Bilder.
Alternativ können auch nachträglich alle Bilder entfernt werden, wenn Excel die Arbeit an dem Dokument noch nicht komplett verweitert. Dazu werden zuerst alle Objekte selektiert mit:
Office 2007++: Suchen und Auswählen -> Inhalte auswählen -> Objekte
Office 2003–: Bearbeiten -> Gehe zu -> Inhalte -> Objekte
und diese dann per [ENTF] Taste gelöscht. Vorsicht jedoch, solltet ihr noch andere Objekte außer Bilder verwenden.
bilder-in-excel-entfernen-step1-suchen-und-auswaehlen-inhaltebilder-in-excel-entfernen-step2-objekte-entfernen

bsi-mail-check-service

Wie ihr eventuell in den News mitbekommen habt, wurden mal wieder E-Mail Adressen im großen Stil gehackt. 18 Millionen deutsche Adressen sollen ebenfalls betroffen sein. Das BSI bietet erneut an, E-Mail Adressen auf eine Gefährdung hin zu überprüfen.

Ich kann empfehlen, dass jeder das für seine privaten Adressen einmal durchgeht.

Wenige E-Mails einzeln testen

Nach dem Absenden der Eingabe erhaltet ihr einen Code, bestehend aus 4 Zeichen. Speichert euch diesen Code!
Bei der Überprüfung wird die eingegebene Adresse mit der Liste gehackter Adressen abgeglichen und bei einer Übereinstimmung (also bei der Möglichkeit eines erfolgreichen Hacks!) eine Bestätigungsmail an diese Adresse versendet. In dieser Mail steht dann ebenfalls ein Code. Überprüft diese 2 Codes – wenn die Codes übereinstimmen ist die E-Mail Adresse vermutlich betroffen; wenn nicht handelt es sich ggf. um einen Hoax.

Viele E-Mails automatisiert testen

Als IT-Administrator bin ich natürlich auch für die Sicherheit aller E-Mail-Adressen des Unternehmens zuständig. Daher war es nötig, alle E-Mail-Adressen prüfen zu lassen. Da das BSI keine „Massenabfertigung“ anbietet, musste eine Automatisierung her; keine Zeit dutzende Adressen von Hand dort einzugeben und den Code zu kopieren.
Ich habe mir innerhalb weniger Minuten ein AutoIt Skript gebastelt, dass diesen Job in kürzester Zeit erledigt.

Hier der Code:

;options
AutoItSetOption("SendKeyDelay", 100)
AutoItSetOption("SendKeyDownDelay", 50)
AutoItSetOption("MouseClickDelay", 20)
For $iCount = 1 To 45
WinWaitActive("Microsoft Excel - ExportData.csv","")
Send("{CTRLDOWN}c{CTRLUP}{ALTDOWN}{TAB}{ALTUP}")
WinWaitActive("BSI-Sicherheitstest - Google Chrome","")
Send("{CTRLDOWN}lv{CTRLUP}{ENTER}")
MouseClick("left",1271, 168,1)
Send("{TAB}{ALTDOWN}{TAB}{ALTUP}")
WinWaitActive("Microsoft Excel - ExportData.csv","")
Send("{TAB}{CTRLDOWN}c{CTRLUP}{ALTDOWN}{TAB}{ALTUP}")
WinWaitActive("BSI-Sicherheitstest - Google Chrome","")
Send("{CTRLDOWN}v{CTRLUP}{TAB}{SPACE}")
MouseClick("left",1378, 355,2)
Send("{CTRLDOWN}c{CTRLUP}{ALTDOWN}{TAB}{ALTUP}")
WinWaitActive("Microsoft Excel - ExportData.csv","")
Send("{TAB}{F2}{CTRLDOWN}v{CTRLUP}{ENTER}{LEFT}{LEFT}{CTRLDOWN}c{CTRLUP}")
Next

Ich denke das Prinzip wird klar. Ließe sich vielleicht optimieren aber Zeit und Nutzen stehen da nicht im Verhältnis.

Aufbau:
Ihr müsst

  1. Chrome benutzen oder die WinWaitActive Fenstertitel anpassen,
  2. auf einem Monitor mit 1920×1080 sowohl Excel als auch den Browser halbieren, Excel links, Browser rechts
  3. in der Excel Tabelle 2 Spalten haben: 1. Spalte der BSI-Link, 2. Spalte die Mail Adresse, in die dritte Spalte wird automatisch der Code eingetragen, je 1 Zeile für jede zu überprüfene E-Mail-Adresse
  4. diese Excel Datei ExportData.csv nennen oder den WinWaitActive Fenstertitel anpassen
  5. die 2 Click-Koordinaten nochmal überprüfen (nutzt dazu „AutoIt Window Info“ – Au3Info.exe)

Grob sollte das reichen, ggf. müsst ihr noch Kleinigkeiten korrigieren aber ich denke damit sollte es schonmal grob laufen.

Hier das Video des laufenden Skripts:

Das Passwort von Windows Accounts zu ändern ist eigentlich eine einfache Angelegenheit. Auch in der Konsole gibt es einen sehr einfachen Befehl:

net user [username] [passwort]


Ein sehr simples Skript zum Neusetzen eines Passworts könnte also so aussehen:

@echo off & setlocal & color 9f
set user=user
set newpw=muhuu123!
net user %user% %newpw%
endlocal

Aber an dieser Stelle geht es mir natürlich nicht um das Ändern eines einzelnen Passworts. Es geht um die Massenänderung eines Passworts, beispielsweise eines Administratorpassworts auf jedem Computer eines Netzwerks.
Nun kann es jedoch bei Dutzenden, Hunderten oder Tausenden Nutzern/Computern zu verschiedenen Problemen oder Nebeneffekten kommen. Der Nutzer könnte nicht existieren, deaktiviert sein oder ein Password mit Ablaufdatum besitzen. Diese Faktoren sollten bedacht werden.

Ich habe ein Skript geschrieben, welches alle diese Faktoren berücksichtigt:

@echo off & setlocal & color 9f
set wd=\\lea\Deployment\Sonstiges\change-admin-pw
set log=%wd%\change-admin-pw.log

REM ###### EDIT THIS ######
REM desired local user account
set user=user
REM is it an active directory domain user or a local user account; can be yes, 1, no, 0
set domainuser=no
REM needed if domain user
set domainparam=
REM desired new password, pay attention to password policies if activated
set newpw=my4w3s0mePW!
REM checks if the desired user account is activated on the machine; can be yes, 1, no, 0
set checkactive=yes
REM needed if active check is performed
set active=0
REM if the user is deactivated, should it get activated, can be yes, 1, no, 0
set reactivate=yes
REM checks if the old password has an expiration date, which would also get changed to a newer date; can be yes, 1, no, 0
set checkpwexpire=yes
REM needed if expiration check is performed
set expires=0
REM changes password though it has an expiration date; can be yes, 1, no, 0
set changeanyways=yes

REM check for empty variables
if "%user%"=="" goto end
if "%newpw%"=="" goto end

REM prepare domain usage
if "%domainuser%"=="yes" set domainparam=/domain
if "%domainuser%"=="1" set domainparam=/domain

REM check if user exists
net user %user% %domainparam%
if not %errorlevel%==0 echo %date% %time:~0,8% Nutzer %user% scheint nicht zu existieren >> %log% && goto end
goto active

:active
if "%checkactive%"=="0" goto expires
if "%checkactive%"=="no" goto expires
REM check if user is active
for /f "tokens=1-3" %%i in ('net user %user% %domainparam%') do ( if "%%i %%j"=="Konto aktiv" set active=%%k )
if "%active%"=="Ja" goto expires
if "%active%"=="Yes" goto expires
REM activate the user if wished
if "%reactivate%"=="yes" net user %user% %domainparam% /Active:YES
if "%reactivate%"=="1" net user %user% %domainparam% /Active:YES
echo %date% %time:~0,8% Nutzer %user% ist deaktiviert. Passwort wird trotzdem zurückgesetzt. >> %log%
goto expires

:expires
if "%checkpwexpire%"=="0" goto changepw
if "%checkpwexpire%"=="no" goto changepw
REM check if user password has an expiration date
for /f "tokens=1-4" %%i in ('net user %user% %domainparam%') do ( if "%%i %%j %%k"=="Kennwort läuft ab" set expires=%%l )
if "%expires%"=="Nie" goto changepw
if "%expires%"=="Never" goto changepw
if "%changeanyways%"=="yes" goto changepw
if "%changeanyways%"=="1" goto changepw
echo %date% %time:~0,8% Nutzer %user% hat ein zeitlich limitiertes Passwort, Passwortänderung wird abgebrochen. >> %log%
goto end

:changepw
net user %user% %newpw% %domainparam%
set pwEL=%errorlevel%
if %pwEL%==0 echo %date% %time:~0,8% Passwort geändert. User: %user% - Aktiviert: %active% - PW läuft ab: %expires% >> %log% && goto end
echo %date% %time:~0,8% Fehler beim Ändern des Passworts: %pwEL%. User: %user% - Aktiviert: %active% - PW läuft ab: %expires% >> %log%
REM Errorlevel 2 means that the chosen password doen't meet the password policy guidelines
goto end

:end
endlocal

Erläuterung:
Anhand der Variablen lässt sich das Verhalten des Skriptes in bestimmten Situationen steuern. Die Kommentare sollten eigentlich alles soweit klar machen.
Ich habe das Skript noch nicht ausführlich getestet, es sollte aber eigentlich keine Probleme geben.

Nun gibt es noch ein letztes Problem: ein solches Skript sollte niemals einfach so auf den Netzlaufwerken liegen, schließlich steht das Passwort dort im Klartext. Und die Ordner, in denen die Gruppenrichtlinienskripte liegen, sind oftmals für die Computer- oder Nutzerobjekte der Domäne lesbar. IT-erfahrene Nutzer könnten also das Skript finden und einsehen.

Es ist also wichtig das Passwort oder das komplette Skript zu verschlüsseln. Je nach Firma, Größe, Nutzergruppe, Sicherheitsrichtlinien usw. muss man in diesen Punkt mehr oder weniger Arbeit stecken.
Ich habe an dieser Stelle ein sehr einfaches Tool gefunden, welches Batch Skripte in .exe Dateien kompilieren kann und damit den Inhalt (für die meisten Menschen) unlesbar macht: Bat To Exe Converter von F2KO macht genau das, was der Name sagt. Außerdem kann die .exe Datei mit einem Passwort verschlüsselt, unsichtbar ausgeführt und mit einem Icon sowie vielen Metainformationen versehen werden.
change-reset-local-user-passwords-bat-to-exe-compiler

Also, Nutzer und endgültiges Passwort in das Skript eintragen, kompilieren und die .exe Datei auf das Netzlaufwerk legen und verteilen. Wenig später ist das Passwort überall neu gesetzt.

windows-activation-error-code-0xc004f063
Problem beim Aktivieren von Windows. Fehlercode 0xC004F063

Problem/Ursache

Dieses Problem hatte ich in letzter Zeit häufiger. Die häufigste Ursache, wie auch bei mir, ist, dass versucht wird, mit einem OEM-Windows Key ein nicht-OEM Windows zu aktivieren.

Beispiel: Ich kaufe einen PC beim Händler, inklusive Windows, der Key klebt via Windows Aufkleber am Tower. Irgendwann installiere ich ein frisches Windows X Professional von einem gekauften Medium und versuche dieses neue Windows dann mit dem Key des Aufklebers wieder zu aktivieren, der Key gehörte ja schließlich zu diesem PC.
Das wird nicht funktionieren.

Warum?
Es gibt Windows Versionen (OEM Version), die (eigentlich) nur für Händler gedacht sind. Dazu passen gibt es dann OEM Lizenzschlüssel.
Ein im Laden gekauftes Windows Betriebssystem, wenn nicht speziell als OEM Variante gekennzeichnet, kann mit diesem OEM Schlüssel, der bei fertig gekauften Computern mitgegeben wird, nichts anfangen. Mit diesem Schlüssel kann nur das vom Hersteller vertriebene Windows aktiviert werden.
Deshalb ist auf gekauften Computersystemen, PCs sowie Laptops, oftmals eine Art Wiederherstellungs-DVD oder -Partition mit dabei, womit sich das Hersteller-Windows-System wiederherstellen lässt. Dieses kann mit dem Schlüssel dann auch erneut aktiviert werden.

Lösung?

Den aktuellen Key aus Windows entfernen und einen neuen, gültigen Key, also vermutlich einen nicht-OEM-Key, eingeben.
Der Windows Key lässt sich mit

slmgr -upk

windows-activation-error-code-0xc004f063-remove-key

entfernen und kann nach dem Befehl

slui 4

erneut eingegeben werden.
Die Befehle müssen in der Admin CMD eingegeben werden, also CMD mit Rechtsklick -> Als Administrator ausführen starten.

via