Archiv der Kategorie: VBScript

KMS – Freund und Feind zugleich…

Key Management Service (KMS) – eine Übersicht

Wer von Windows XP auf Windows 7 migriert (hat), wird schon bemerkt haben, dass die Art der Lizenzierung / Aktivierung (bei XP zu Erinnerung: Campuslizenz mit einem Key, der bereits im geklonten Image bereitgestellt werden kann) rapide geändert wurde.

Grundsätzlich gibt es 2 Möglichkeiten:
Die zentrale Aktivierung via KMS-Server (und daher bessere) und die dezentrale mit Eingabe der MAKs auf den einzelnen Clients inkl. manueller Aktivierung (und daher wesentlich arbeitsintensivere und schlechtere.)

Da mein Credo zu allen Tages- und Nachtzeiten (in Ahnlehnung an die schweizer Kollegen) lautet „Real Men don’t click [more than necessarily]“ verzichte ich auf die Besprechung der MAK-Variante völlig und wende mich nun in weiterer Folge der Konfiguration eines KMS-Servers (inkl. aller dabei auftretenden Schwierigkeiten) zu!

Step by Step Anleitung: „Installation eines funktionierenden KMS-Servers“

1.) Windows Server 2008 R2 installieren und manuell mittes des über die MS-ACH erhaltenen MAKs für Windows Server 2008 aktivieren (Start >> Systemsteuerung >> System >> Windows Aktivierung)

2.) KMS aktivieren
eine Command-Shell [= Eingabeaufforderung] als Administrator starten (rechte Maustaste >> „als Administrator ausführen“), dann folgende Befehle in der angeführten Reihenfolge absetzen:

cscript C:\windows\system32\slmgr.vbs /ipk <KMS Key>
cscript C:\windows\system32\slmgr.vbs /ato

Hinweis: nach jedem Befehl öffnet sich eine Meldung, die den Erfolg der Aktion ausgibt

3.) Firewall kontrollieren, ob der KMS auch „einen Passierschein hat“
[Stichwort: eingehende Regeln >> Schlüsselverwaltungdienst (TCP eingehend) >> Zulassen ]

4.) Eintrag am DNS-Server kontrollieren
DNS-Management-Konsole >> Forward-Lookupzonen >> FQDN >> _TCP >> _VLMCS (Eintrag des Servers, der
den KMS-Host darstellt
(Falls dieser Eintrag fehlt:
>> Forward-Lookupzonen >> FQDN >> _TCP >> rechte Maustaste >> weitere neue Einträge >> Dienstidentifizierung (SRV) >>  Dienst: _VLMCS // Protokoll: _tcp // Priorität: 0 // Gewichtung: 0 // Portnummer: 1688 // Host, der diesen Dienst anbietet = FQDN des KMS-Servers // beide Kontrollkästchen bleiben leer // Gültigkeit 0:1:0:0)

5.) KMS kontrollieren
Start / Ausführen:  slmgr.vbs /dli
Es erscheint – nach kurzem Warten – ein Popup mit einigen Daten, unter anderem der Zeile
aktuelle Anzahl: 7 (wobei hier 7 nur ein Beispiel ist…)

Sollten die Clients nicht innerhalb kürzester Zeit die Aktivierung erhalten, dann lohnt sich die weitere Lektüre dieses Artikels garantiert!!!!

Problemfelder bei der Lizenzierung mittels KMS
(Arbeitstitel: der Dreck funktioniert bei mir nicht…):

1.) Der KMS arbeitet erst ab einer durch ihn verwalteten Anzahl von 25 Clients!!!!

PROBLEM:
selbst, wenn man > 200 (z. B. mit WDS) geklonte Clients in Betrieb hat, kann es dennoch sein, dass den Clients die Aktivierung mit folgender Fehlermeldung verwehrt wird:

0xC004F038
Vom Softwarelizenzierungsdienst wurde gemeldet, dass der Computer nicht aktiviert werden konnte. Die vom Schlüsselverwaltungsdienst (Key Management Service, KMS) gemeldete Anzahl reicht nicht aus. Wenden Sie sich an den Systemadministrator.

die Ursache hierfür könnte nun darin liegen, dass wir zwar mehr als 25 Clients verwalten möchten, der KMS-Server aber keinen Unterschied zwischen unseren Clients erkennt…
Mit anderen Worten: für ihn gleichen unsere Clients wie ein Ei dem anderen…
Dies führt uns zu folgendem:

2.) mindestens 25 Clients müssen eine unterschiedliche CMID haben!
damit einhergehend:
3.) What the hell is a CMID?

Jeder Client generiert überlicherweise eine einzigartige Client Machine ID (CMID). Um dies zu gewährleisten, sollten Clients vor deren Klonen auch mit
sysprep /generalize [/oobe /shutdown]

darauf vorbereitet werden.

Sollte das Klonen per Windows Deployment Service (WDS) erfolgen, so ist zwecks Lite- bzw. Zerotouch-Deployment das Hinterlegen einer ImageUnattend.xml unumgänglich!

Sollte nun in dieser ImageUnattend.xml der Eintrag
<SkipRearm>1</SkipRearm>
vorhanden sein, dann werden – auch bei fehlerfrei ausgeführtem SYSPREP – keine neuen CMIDs generiert.

Daher zählt der KMS auch die Anzahl der Anfragen nicht hinauf, und dann wären wir wieder bei Problem Nummer 1: der KMS arbeitet erst aber einer Anzahl von 25 Clients!!!

4.) Zwischenfrage: Welche CMID hat der Client?

Grundsätzlich scheint die CMID auf, wenn man am Client slmgr.vbs /dli ausführt UND der Client bereits aktiviert ist!
Wenn der Client noch nicht aktiviert ist (was auch der Fall sein dürfte, sonst wäre uns die CMID nämlich ziemlich
všecko jedno) funktioniert dies aber nicht!

Um bei nicht aktivierten Clients die CMID zwecks Vergleichens zu ermitteln, ist ein Blick in die Ereignisanzeige anzuraten:

Protokollname: Application
Quelle:        Microsoft-Windows-Security-SPP
Datum:         20.02.2012 23:58:24
Ereignis-ID:   12288
Aufgabenkategorie:Keine
Ebene:         Informationen
Schlüsselwörter:Klassisch
Benutzer:      Nicht zutreffend
Computer:      DV101.hak-neusiedl.local
Beschreibung:
Vom Client wurde eine Aktivierungsanforderung an den Computer mit dem Schlüsselverwaltungsdienst gesendet.
Info:
0x00000000, 0x00000000, wicky.hak-neusiedl.local:1688, 586a12e2-5e2f-4c55-a6c0-0152af448ec4, 2012/02/20 22:58, 0, 3, 43200, ae2ee509-1b34-41c0-acb7-6d4650168915, 25

CMID in diesem Fall:586a12e2-5e2f-4c55-a6c0-0152af448ec4

Wenn nun alle geklonten Clients eine idente CMID haben, dann wäre es nun an der Zeit für folgendes:

4.) Holt mich hier raus, ich bin ein Star 😉

3 Lösungsansätze stehen zur Verfügung (The Good, The Bad, The Ugly)

LÖSUNG – Variante 1
>> mindestens 25 Clients neu zu klonen:
(The UGLY!)

die richtige Vorgehensweise dabei:
Client vorbereiten mit
sysprep /generalize /oobe /shutdown
+
in der ImageUnattend.xml
<SkipRearm>0</SkipRearm>

Nachteil dieser Variante: Arbeitsintensiv, im laufenden Betrieb nicht machbar!

LÖSUNG – Variante 2
>> mindestens 25 Clients manuell mit neuen CMIDs versehen:
(The BAD)

Wenn slmgr.vbs /rearm am Client ausgeführt wird, so wird eine neue CMID generiert.
Btw: Dies kann auf jedem Client bis zu 3 mal wiederholt werden, die aktuell verbleibende Anzahl kann am Client mit slmgr.vbs /dlv abgelesen werden!

Da mindestens 25 Clients mit unterschiedlicher CMID zu einem funktionierenden KMS führen würde, könnten wir jetzt kurzerhand zu 25 Clients laufen, dort slmgr.vbs /rearm eingeben, jeden Client neu starten und der KMS läuft jetzt endlich!

Doch halte inne und bedenke:
Real Men don’t click (and – of course –  don’t run around)

LÖSUNG – Variante 3
>> mindestens 25 Clients per Startscript mit neuen CMIDs versehen:

(The GOOD!!!!)

Hier ein Script, das – per Gruppenrichtlinie als Starskript – für Dich die Arbeit erledigt:

'############## Edi Pfisterer -- 11/5/2012 -- REARM_IT ##############

on Error resume next
logdatei = "c:\rearm.txt"
Set fs = CreateObject("Scripting.FileSystemObject")
If NOT fs.FileExists (logdatei) then

'############################ just rearm it, baby ############################'

Set WshShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run("wscript ""c:\windows\system32\slmgr.vbs"" /rearm ")

'##########################   LOGDATEI schreiben, die anzeigt,
ob REARM schon einmal gelaufen ist ########################

    Set a = fs.CreateTextFile(logdatei, True)
    a.WriteLine("rearmed wurde am " & now())
    a.Close
END IF

Funktionsweise:
Es wird auf C:\ eine Datei namens rearm.txt angelegt, weiters wird slmgr.vbs /rearm aufgerufen.
Beim nächsten Aufruf des Startscripts wird geprüft, ob die rearm.txt vorhaden ist, und in diesem Fall auf slmgr.vbs /rearm verzichtet….

5. wie schauts mit einer GUI aus?

Kein Problem! Mit dem VAMT (Volume Activation Management Tool) 2.0 (ACHTUNG: ZWEI — PUNKT — NULL // Das 1.0 war zum Vergessen!!!) hat man ein feines Tool zur Hand, das einen klaren Überblick über die Lizenzierungssituation gibt!
Aber ACHTUNG: Wenn der KMS nicht richtig funktioniert, dann wir man mit dem VAMT auch keinen Spass haben!!! Das VAMT ersetzt den KMS NICHT!!!

Vorgangsweise Installation / Verwendung von Volume Activation Management Tool:

  • VAMT 2.0 bei Microsoft downloaden (googlen ist den Menschen zumutbar)
  • am KMS installieren und starten
  • im mittleren Fenster „Search for computers in the Active Directory“ auswählen
  • alle im unteren, mittleren Fenster gefunden Clients mit STRG + A makieren
  • Rechte Maustaste >> Update Status / Current Credential (sofern man als Domainadmin angemeldet ist)
  • Nun erfolgt eine Einteilung in
    Licensed
    Out-of-Box
    Out of Tolerance Grace
    (Tipp: Falls dort alle Clients landen und keine bei Licensed, dann wurde das Problem der identen CMIDs – noch – nicht gelöst!)
  • Wenn sich noch nicht alle Clients unter „Licensed“ einreihen, dann hilft
    recht Maustaste auf den/die Clients >> Activate >> KMS Activate >> …

Im Idealfall sieht das ganze dann so ähnlich aus (in dieser Umgebung sind > 160 Clients vorhanden, da wäre eine Aktivierung via MAKs kein Spass gewesen…):

Da fällt mir mein Schwager ein, der bei dieser Gelegenheit sagen würde
„Hätte es immer schon SO ausgesehen, hätte man nichts machen müssen… 😉 “

FAZIT:

Der KMS ist – wenn man eine große Anzahl von Windows 7 Clients administrieren darf – eine feine Sache! Wenn er erst einmal funktioniert…

praktische Software: „ADMINOMAT“, um Remote ganze Schulungsräume aufzusetzen

Adminomat_2.0


Ziel der Software „Adminomat“:

Main Feature:
Ganze Schulungsräume remote über WDS aufzusetzen, in dem alle gewünschten Clients remote per WOL gestartet werden.

Dies ist möglich durch die Kombination von Windows Active Directory (AD), Wake on Lan (WOL) und Windows Deployment Service (WDS) in einem einzigen Tool!

Dadurch können Rollouts von Images für ganze Organisationseinheiten eines Active Directory erfolgen, ohne dass der Administrator physikalisch zum Client gehen muss!

Zusatzfeatures:
ganze Organisationseinheiten (zb. Schulungsräume, Abteilungen, etc) können remote gestartet werden, neu gebootet werden, oder heruntergefahren werden.
Weiters kann eine Auswahl getroffen werden, nach folgenden Kriterien:

  • angemeldete User
  • OU des angemeldeten Users
  • x86/x64
  • Datum der letzten Installation
  • Gerätehersteller bzw. -typ
  • RAM
  • etc etc

Voraussetzungen (für die volle Funktionalität):

Server:
Betriebssystem: ab Windows Server 2003 R2 / 2008 / 2008 R2
WDS sollte installiert sein (optional, damit der WDS bedient werden kann)
Verwendung von Microsoft – DHCP – Server ist vorteilhaft

Clients:
Im BIOS muss Wake On Lan einmalig aktiviert werden (inkl. bei Remotesitzung von Remoteserver booten);
Unter Windows muss in der Energieverwaltung der Netzwerkkarte folgendes aktiviert werden:
„Gerät kann Computer aus dem Ruhezustand aktivieren“

Download / Installation:

Das Tool wird NICHT installiert, sondern wird lediglich von einem beliebigen Ordner (auch USB-Stick o. ä.) am Server gestartet.
Am System wird NICHTS verändert!!!
Das Tool läuft auf jedem Windows Client ab XP!!!
Um den WDS zu bedienen und so ein Zero-Touch-Rollout zu starten, muss das Tool allerdings auf einem WDS-Server gestartet werden

Download unter:

www.adminomat.at

Handhabung und Funktion:
WICHTIG: das Tool sollte mit erhöhten Rechten ausgeführt werden –>
Rechte Maustaste auf das Tool –> „als Administrator ausführen“

Bedienung:

Clients remote per WDS neu aufsetzen:

a) kontrolliere deine „UnattendedPE.xml“ auf das gewünschte INSTALLATIONSabbild im Abschnitt

<InstallImage>
<ImageName>schulungsraum</ImageName>
<ImageGroup>windows7</ImageGroup>
<Filename>schulungsraum.wim</Filename>
</InstallImage>

btw: meine 100%ig funktionierende .xml gibt’s hier zum DOWNLOAD

b) Wichtig: Du solltest nur 1 STARTabbild aktiviert haben!!!

c) wenn ADMINOMAT am WDS-Server gestartet wird, gibt es den Menüpunkt „WDS“ –>  „ohne F12“
-> dadurch muss auf den Clients nicht mehr die Taste F12 gedrückt werden!!!
(es erscheint ein roter Hinweis, dass derzeit alle startenden Clients neu aufgesetzt werden…)

d) STARTE nun die gewünschten Clients oder die gesamte OU durch drücken des Buttons

e) WARTE ein paar Minuten (bis auf allen Clients PE gebootet hat)

f) drücke anschließend wieder den Button „mit F12“
(ansonsten wiederholt sich der Vorgang beim 1. Reboot und der Client wird zum 2. mal neu aufgesetzt…)

 

technischer Hintergrund
Wake on LAN wurde über das Tool wake.exe von Matthias Zirngibl (http://masterbootrecord.de/docs/wakeup.php) realisiert.)

 

in diesem Sinne

Have fun!

freien Speicher auf einem Laufwerk regelmäßig auslesen

Problemfeld:
der freie Speicherplatz auf einem Datenträger variiert sehr stark im Tagesverlauf, die Ursache ist unklar. Es könnte hilfreich sein, die Veränderungen im Zeitverlauf zu protokollieren, damit der Übeltäter leichter eingrenzbar ist.

Lösung:
Der freie Speicher auf einem Laufwerk lässt sich mit folgendem VBScript-Code sehr leicht protokollieren:

folgenden Code einfach als „freierSpeicher.vbs“ an einem beliebigen Ort speichern:

Dim fso, drive, FreeSpace

Set fso = CreateObject("Scripting.FileSystemObject")

Set drive = fso.GetDrive("c:\")

FreeSpace = drive.AvailableSpace

FreeSpace = round(FreeSpace/1024/1024/1024,2)

'msgBox Freespace & "GB"

datei= "freierSpeicher.txt"

If NOT fso.FileExists(datei) Then

set dateineu = fso.createtextfile(datei, false) 

else

set dateineu = fso.OpenTextFile(datei, 8,1)

end if

dateineu.writeline Freespace & "GB frei - erstellt am " & now & vbcrlf

set drive = nothing

set fso = nothing

Ergebnis:
Beim Ausführen der Datei  „freierSpeicher.vbs“ wird eine „freierSpeicher.txt“ erstellt, die folgende Einträge enthält:

0,14GB frei - erstellt am 01.11.2011 17:48:51

Wenn nun der Aufruf dieser freierSpeicher.vbs als geplanter Task im 10 Minuten-Takt wiederholt wird, bekommt man ein sehr aufschlussreiches Bild darüber, wie sich der Speicherplatz verändert…

VBScript to Powershell

Nur damit ich (und andere?) den Link wieder finde…
Es gibt unter folgendem Link ein Word-Dokument namens VBStoPS, das heisst, ein Kompendium von „Übersetzungen“ von VisualBasicScript in ein PowerShell Script, unterteilt nach VBScript-Befehlen inkl. eines Beispiels und dem zugehörigen PowerShell Befehl.

Der Download von Microsoft ist eine selbstextrahierende .exe, der Name ist etwas irreführend… (Windows Powershell Week Script Samples…)

Für jemanden wie mich, der VBScript „beherrscht“ und ab und zu Powershell braucht, ein Volltreffer 😉

http://www.microsoft.com/download/en/confirmation.aspx?id=3560

PS: hier gäbe es das ganze Online…

hta – Troubles auf Windows Server 2008 R2 (= 64 bit)

Eine aus einer hta aufgerufene Command-shell läuft auf einem 64-bit-System per default als 32-bit-Anwendung (Kontrolle: Taskmanager -> cmd.exe*32)Wo ist hier die Ursache zu suchen?auf einem Windows Server 2008 R2 (ohne SP1) sind mehrere mshta.exe vorhanden:
1.) mshta.exe in c:\windows\system32  – Dateiversion 8.0.7600.16385
2.) mshta.exe in c:\windows\winsxs\amd64_microsoft-windows-ie-htmlap… – Dateiversion  8.0.7600.16385
3.) mshta.exe in c:\windows\sysWOW64 – Dateiversion   8.0.7600.16385
4.) mshta.exe in c:\winsxs\wow64_microsoft-windows-ie-htmlap… – Dateiversion   8.0.7600.16385 

Bei mir wurde (auf dem mir vorliegenden System) per default jede .hta mit „C:\Windows\SysWOW64\mshta.exe“ gestartet…
das Kuriose daran: obwohl der Pfad intuitiv auf eine 64-bit-Anwendung hindeuten würde, handelt es sich hierbei um die 32-bit-Version der mshta.exe [ARGHH]

Wird nun aus einer hta. Weiterlesen

Windows Server Command-Line Reference

Weil ich soeben zufällig darüber gestolpert bin:
Windows Server Command-Line Reference

viele „alte Bekannte“ aber auch – zumindest mir – neue Befehle…

mir persönlich hats der WDSutil – Teil speziell angetan…

[weil ich derzeit eine Software bastle, die mir das gesamte AD inkl OUs + zugehöriger Clients und deren MAC-und IP-Adressen einliest und mir dadurch ermöglicht, einzelne oder alle Clients einer OU
– zu rebooten
– herunterzufahren
– per WOL „aufwecken“ und
– dann per WDS remote neu aufzusetzen…]

WDS: Image wird nicht oder manchmal nicht kopiert

Problem: ein Image lässt sich per WDS nicht verteilen, es kommt zu folgender Fehlermeldung:

Windows could not parse or process unattend answer file
[unattend.xml] for pass [specialize].

Die Antwortdatei für die unbeaufsichtigte Installation [unattend.xml]
für Durchgang [specialize] konnte nicht analysiert oder verarbeitet werden.
Die Antwortdatei ist ungültig.

mögliche Ursache und Lösung: Weiterlesen

Drucken im AD – Erweiterung für Vista und Windows7

Gegen jede Vernunft: Domänenbenutzer dürfen  seit Windows Vista nicht mehr Drucker installieren
(was unter XP problemlos möglich war…)

Aber: es gibt eine Lösung…

Step-by-Step-Anleitung: Drucker im Active Directory per Script verteilen – für Parallelbetrieb Windows XP, Windows Vista bzw. Windows 7 Weiterlesen

Schriftliche Prüfungen am PC sicher und „schwindelfrei“

Das Problem:
Es sollen vermehrt Prüfungen am PC abgewickelt werden. Schummeln könnte eingeschränkt werden, wenn folgende Rahmenbedingungen erfüllt wären:

a) kein Datenaustausch übers Internet
b) nicht auf die eigenen Daten zugreifen
c) keine Daten per USB-Stick mitbringen
d) Daten nicht schon vor der Prüfung irgendwo am PC deponieren
e) nicht auf Netzwerkfreigaben (z.B auf Laptops eingerichtet) zugreifen können
f) während der Prüfung soll sich der Schüler nur mit der Prüfungskennung einloggen können

Ein Lösungsansatz: Weiterlesen