Rechner Inventarisierung, Login Skript und Login Dokumentation mit Kix und Active Directory
Dieses Tutorial soll ein Beispiel für ein Domänen Anmelde- und Abmeldeskript sein, welches als nettes Abfallprodukt noch einige Rechner Informationen über die Hard- und Software erfasst.
Rechner Inventarisierung Login Skript und Dokumentation mit Kix und Active Directory.
Jeder Admin einer Domäne ist interessiert an den aktuellen Rechner Daten in seinem Netz. Aus diesem Grund habe ich vor drei bis vier Jahren mit Kix begonnen Skripte zu schreiben. Ich habe hier ein Kix Skript für die Anmeldung gebastelt, welches mir beim Login der User die Daten, der Rechner und die Infos wer sich An- bzw. Abgemeldet hat, in zwei Log-Files schreibt. Je eine für die Rechner Daten und eine für die Anmeldeinformationen.
Somit habe ich immer aktuelle Daten über die Konfiguration meiner Rechner im Netz und habe für jeden Tag eine Datei mit den An- und Abmeldungen. Ein weiterer Vorteil besteht darin das ich nun auch kontrollieren kann was alles an Software im Netz eingesetzt wird.
Was macht dieses Skript alles:
Wobei zu sagen bleibt, dass dies bei weitem nicht alles ist was mit Kix möglich ist.
So nun fangen wir mal an
Als erstes laden wir uns mal das aktuelle Kix Paket von http://www.kixtart.org herunter. Derzeitig ist die aktuelle Version 4.51. Nach dem entpacken der Datei benötigen wir erstmal nur die Datei "Kix32.exe" welche wir uns in einen neuen Ordner auf unserer Platte kopieren.
In diesem Ordner erstellen wir eine neue Datei welche wir "login.kix" nennen.
Diese Datei öffnen wir nun mit dem Notepad oder einem beliebigen anderen Editor, Tipp: ich würde die Endung .kix direkt dem Editor zuordnen denn beim arbeiten wird doch öfters mal getestet und dann kann man die Datei mit einem einfachen Doppelklick wieder bearbeiten.
Um unser Skript später zu testen ziehen wir per Drag and Drop unser Skript auf die kix32.exe oder direkt in der DOS Eingabeauffordung
mit "kix32.exe login.kix".
Zur Funktion:
Bereich Variablen
Hier werden die jeweiligen Servernamen gesetzt. In den meisten Fällen wird zwar alles auf einem einzigen Server durchgeführt, sollte es jedoch eine größeres LAN mit mehreren Servern sein, kann es durch aus Sinn machen die einzelnen Funktionen (File-, Druckserver, etc.) auf verschiedene Maschinen zu verteilen
Bereich Netzlaufwerke
Als erstes werden alle vorhandenen Netzlaufwerke getrennt, ganz klar erstmal reinen Tisch machen. Anschließend werden vom Fileserver die Freigaben Benutzer und / oder Gruppen bezogen gemappt. Sollte es mal einen Account "Gast" geben, was ich ja kaum glaube, dann soll dieser nur das Laufwerk "Public" gemappt bekommen. Aus diesem Grund wird direkt nach dem Mapping der Standard Block übersprungen "goto EndSharing" und an der Sprungmarke <:EndSharing> mit dem Skript fortgefahren.
Etwas spezielles ist noch die Freigabe <use z: "\\"+$Fileserver+"\"+@userid+"$">. Hier wird für jeden User ein individuell eine Freigabe, auf die nur er Zugriff hat, gemappt. Ich Verbinde mit dieser Funktion für jeden User ein persönliches Laufwerk, auf welchen er persönliche Dinge ablegen kann. Durch das $ hinter der Freigabge wird diese als nicht sichtbar deklariert und wird beim browsen in der Netzwerk Umgebung auf den Servern nicht angezeigt.
Druck Warteschlangen verbinden
Wenn ich auf dem einem Server Drucker Freigegeben habe, werden diese hier verbunden. Da alte Drucker, welche nicht mehr vorhanden sind, nicht automatisch auf den Clients gelöscht werden, kann ich die Löschung auch per Skript vornehmen. Hier wird Beispielhaft ein nicht mehr vorhandener Laser Drucker von den Clients gelöscht. Anschließend werden noch zwei weitere Drucker verbunden. Die Druckertreiber werden in der Regel automatisch vom Server auf die Clients übertragen. Wenn sich die Clients das erste mal mit dem Server verbinden dauert die Anmeldung etwas länger da die Druckertreiber komplett mit übertragen werden müssen. Bei weiteren Anmeldungen geht der Anmeldevorgang dann zügiger von statten.
Bereich Hardware
Kix stellt einige Variablen zur Verfügung, welche Informationen über das System enthalten. Diese Variablen an einem beginnenden @ Zeichen (Bsp.: @cpu) zu erkennen. Hier verweise ich auf die Dokumentation "Kix2010.doc" welche im Download enthalten ist. Die Hardware Informationen sind bis auf die IP-Adresse (@IPADRESS0) selbsterklärend. Bei @ipadressx muß das x durch einen Wert zwischen 0 und 3 ersetzt werden. Dieser gibt an welche IP-Adresse angezeigt werden soll. Ich habe mich in diesem Skript auf die erste Adresse beschränkt da es leider nur eine Möglichkeit gibt die MAC Adresse der ersten NIC anzuzeigen. Die einzelnen Blöcke der IP-Adresse werden mit führenden Leerzeichen dargestellt (z.B. 192.168. 2. 12). Wer dieses umgehen möchte, da die Daten eventuell weiterverarbeitet werden sollen, der sollte sich einmal den Befehl Split und Element anschauen. Hiermit ist es möglich die Leerzeichen zu entfernen. Ich habe diesen Code aus dem Skript rausgelassen, habe ihn jedoch am Ende der Doku angefügt. Diesen Code bei Bedarf mit der Stelle mit der Ausgabe der IP-Adresse ersetzen.
Bereich Software
Um zu erfahren welche Software installiert ist, liest das Skript die Registry Einträge aus dem Pfad "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" aus. Wie hier zum auslesen der Software, ist es auch möglich eigene Registry Einträge zu erstellen, auszulesen, zu ändern oder zu löschen. Ich hatte diese einmal genutzt um in Zeiten wo es noch keinen SUS bzw. WSUS gab erfahren ob Microsoft Patche installiert sind (Jaja die guten alten Würmer). Bitte in der Doku nach "DELKEY, DELVALUE, ENUMKEY, ENUMVALUE, KEYEXIST, READTYPE, READVALUE, WRITEVALUE" suchen.
Bereich Anmeldung und Abmeldung
Hier wird lediglich zu Beginn geschaut, ob es für den aktuellen Tag bereits eine Login Datei gibt. Wenn die Datei noch nicht existiert wird zusätzlich zu den Anmeldeinformationen ein Header geschrieben, damit die Datei übersichtlicher wird. Auch hier werden wieder System Variablen welche Kix zu Verfügung stellt angewendet um Informationen zu erhalten. In meinem Beispiel wird für jeden Tag eine neue Login Datei generiert. In kleineren Domänen könnte man sich auch auf eine Datei Pro Woche bzw. Pro Monat beschränken. Hierfür muß lediglich der Datei name angepasst werden (z.B. Anmeldungen "+" @year+"."+@MONTHNO+".TXT" für eine Datei Pro Monat).
Für die Abmeldung wird der gleiche Code verwendet wie für die Anmeldung, wobei zu beachten ist das in der Zeile <? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦"> das kleine i durch ein o ersetzt wird. Es ist natürlich möglich hier einen x-beliebigen Begriff für Login und Logoff einzusetzen.
Wo setze ich nun die Skripte ein und wie aktiviere ich diese?
Die drei Dateien kix32.exe, login.kix und die logoff.kix kopieren wir in die NETLOGON Freigabe in unserer Domäne. Jetzt erstellen wir noch eine Gruppenrichtlinie die für alle User greift. Am besten eine eigene OU a la "Firmen User" erstellen und alle User Konten hierher verschieben wenn noch nicht geschehen. Für diese OU eine GPO erstellen. In dieser GPO folgende Eigenschaften eintragen.
Rechner Inventarisierung Login Skript und Dokumentation mit Kix und Active Directory.
Jeder Admin einer Domäne ist interessiert an den aktuellen Rechner Daten in seinem Netz. Aus diesem Grund habe ich vor drei bis vier Jahren mit Kix begonnen Skripte zu schreiben. Ich habe hier ein Kix Skript für die Anmeldung gebastelt, welches mir beim Login der User die Daten, der Rechner und die Infos wer sich An- bzw. Abgemeldet hat, in zwei Log-Files schreibt. Je eine für die Rechner Daten und eine für die Anmeldeinformationen.
Somit habe ich immer aktuelle Daten über die Konfiguration meiner Rechner im Netz und habe für jeden Tag eine Datei mit den An- und Abmeldungen. Ein weiterer Vorteil besteht darin das ich nun auch kontrollieren kann was alles an Software im Netz eingesetzt wird.
Was macht dieses Skript alles:
- verbinden und trennen von Netzwerk Freigaben
- verbinden und trennen von Netzwerk Druckern (Druckwarteschlangen auf Domänen Rechnern oder Servern)
- erfassen aller Benutzer An- und Abmeldungen (für die Abmeldung ist ein zweites Skript mit gleichem Inhalt notwendig welches unterhalb der >>Login.kix<< steht)
- erstellen einer Datei für Alle An- und Abmeldungen pro Tag
- erfassen aller Rechner von denen sich angemeldet wird (nur Domänen Rechner)
- was wird erfasst:
- Hardware (CPU, Betriebssystem, NetBios Name, RAM, MAC Adresse, IP Adresse)
- Software (Alle installierten Programme sowie Patche)
Wobei zu sagen bleibt, dass dies bei weitem nicht alles ist was mit Kix möglich ist.
So nun fangen wir mal an
Als erstes laden wir uns mal das aktuelle Kix Paket von http://www.kixtart.org herunter. Derzeitig ist die aktuelle Version 4.51. Nach dem entpacken der Datei benötigen wir erstmal nur die Datei "Kix32.exe" welche wir uns in einen neuen Ordner auf unserer Platte kopieren.
In diesem Ordner erstellen wir eine neue Datei welche wir "login.kix" nennen.
Diese Datei öffnen wir nun mit dem Notepad oder einem beliebigen anderen Editor, Tipp: ich würde die Endung .kix direkt dem Editor zuordnen denn beim arbeiten wird doch öfters mal getestet und dann kann man die Datei mit einem einfachen Doppelklick wieder bearbeiten.
Um unser Skript später zu testen ziehen wir per Drag and Drop unser Skript auf die kix32.exe oder direkt in der DOS Eingabeauffordung
mit "kix32.exe login.kix".
Zur Funktion:
Bereich Variablen
Hier werden die jeweiligen Servernamen gesetzt. In den meisten Fällen wird zwar alles auf einem einzigen Server durchgeführt, sollte es jedoch eine größeres LAN mit mehreren Servern sein, kann es durch aus Sinn machen die einzelnen Funktionen (File-, Druckserver, etc.) auf verschiedene Maschinen zu verteilen
Bereich Netzlaufwerke
Als erstes werden alle vorhandenen Netzlaufwerke getrennt, ganz klar erstmal reinen Tisch machen. Anschließend werden vom Fileserver die Freigaben Benutzer und / oder Gruppen bezogen gemappt. Sollte es mal einen Account "Gast" geben, was ich ja kaum glaube, dann soll dieser nur das Laufwerk "Public" gemappt bekommen. Aus diesem Grund wird direkt nach dem Mapping der Standard Block übersprungen "goto EndSharing" und an der Sprungmarke <:EndSharing> mit dem Skript fortgefahren.
Etwas spezielles ist noch die Freigabe <use z: "\\"+$Fileserver+"\"+@userid+"$">. Hier wird für jeden User ein individuell eine Freigabe, auf die nur er Zugriff hat, gemappt. Ich Verbinde mit dieser Funktion für jeden User ein persönliches Laufwerk, auf welchen er persönliche Dinge ablegen kann. Durch das $ hinter der Freigabge wird diese als nicht sichtbar deklariert und wird beim browsen in der Netzwerk Umgebung auf den Servern nicht angezeigt.
Druck Warteschlangen verbinden
Wenn ich auf dem einem Server Drucker Freigegeben habe, werden diese hier verbunden. Da alte Drucker, welche nicht mehr vorhanden sind, nicht automatisch auf den Clients gelöscht werden, kann ich die Löschung auch per Skript vornehmen. Hier wird Beispielhaft ein nicht mehr vorhandener Laser Drucker von den Clients gelöscht. Anschließend werden noch zwei weitere Drucker verbunden. Die Druckertreiber werden in der Regel automatisch vom Server auf die Clients übertragen. Wenn sich die Clients das erste mal mit dem Server verbinden dauert die Anmeldung etwas länger da die Druckertreiber komplett mit übertragen werden müssen. Bei weiteren Anmeldungen geht der Anmeldevorgang dann zügiger von statten.
Bereich Hardware
Kix stellt einige Variablen zur Verfügung, welche Informationen über das System enthalten. Diese Variablen an einem beginnenden @ Zeichen (Bsp.: @cpu) zu erkennen. Hier verweise ich auf die Dokumentation "Kix2010.doc" welche im Download enthalten ist. Die Hardware Informationen sind bis auf die IP-Adresse (@IPADRESS0) selbsterklärend. Bei @ipadressx muß das x durch einen Wert zwischen 0 und 3 ersetzt werden. Dieser gibt an welche IP-Adresse angezeigt werden soll. Ich habe mich in diesem Skript auf die erste Adresse beschränkt da es leider nur eine Möglichkeit gibt die MAC Adresse der ersten NIC anzuzeigen. Die einzelnen Blöcke der IP-Adresse werden mit führenden Leerzeichen dargestellt (z.B. 192.168. 2. 12). Wer dieses umgehen möchte, da die Daten eventuell weiterverarbeitet werden sollen, der sollte sich einmal den Befehl Split und Element anschauen. Hiermit ist es möglich die Leerzeichen zu entfernen. Ich habe diesen Code aus dem Skript rausgelassen, habe ihn jedoch am Ende der Doku angefügt. Diesen Code bei Bedarf mit der Stelle mit der Ausgabe der IP-Adresse ersetzen.
Bereich Software
Um zu erfahren welche Software installiert ist, liest das Skript die Registry Einträge aus dem Pfad "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" aus. Wie hier zum auslesen der Software, ist es auch möglich eigene Registry Einträge zu erstellen, auszulesen, zu ändern oder zu löschen. Ich hatte diese einmal genutzt um in Zeiten wo es noch keinen SUS bzw. WSUS gab erfahren ob Microsoft Patche installiert sind (Jaja die guten alten Würmer). Bitte in der Doku nach "DELKEY, DELVALUE, ENUMKEY, ENUMVALUE, KEYEXIST, READTYPE, READVALUE, WRITEVALUE" suchen.
Bereich Anmeldung und Abmeldung
Hier wird lediglich zu Beginn geschaut, ob es für den aktuellen Tag bereits eine Login Datei gibt. Wenn die Datei noch nicht existiert wird zusätzlich zu den Anmeldeinformationen ein Header geschrieben, damit die Datei übersichtlicher wird. Auch hier werden wieder System Variablen welche Kix zu Verfügung stellt angewendet um Informationen zu erhalten. In meinem Beispiel wird für jeden Tag eine neue Login Datei generiert. In kleineren Domänen könnte man sich auch auf eine Datei Pro Woche bzw. Pro Monat beschränken. Hierfür muß lediglich der Datei name angepasst werden (z.B. Anmeldungen "+" @year+"."+@MONTHNO+".TXT" für eine Datei Pro Monat).
Für die Abmeldung wird der gleiche Code verwendet wie für die Anmeldung, wobei zu beachten ist das in der Zeile <? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦"> das kleine i durch ein o ersetzt wird. Es ist natürlich möglich hier einen x-beliebigen Begriff für Login und Logoff einzusetzen.
Wo setze ich nun die Skripte ein und wie aktiviere ich diese?
Die drei Dateien kix32.exe, login.kix und die logoff.kix kopieren wir in die NETLOGON Freigabe in unserer Domäne. Jetzt erstellen wir noch eine Gruppenrichtlinie die für alle User greift. Am besten eine eigene OU a la "Firmen User" erstellen und alle User Konten hierher verschieben wenn noch nicht geschehen. Für diese OU eine GPO erstellen. In dieser GPO folgende Eigenschaften eintragen.
- Benutzerkonfiguration -> Windows-Einstellungen -> Skripts (Anmeldn/Abmelden)
- Anmelden-
- Skriptname = "\\DeinDomänenname\SYSVOL\DeinDomänenname\scripts\kix32.exe"
- Skriptparameter "login.kix"
- Abmelden-
- Skriptname = "\\DeinDomänenname\SYSVOL\DeinDomänenname\scripts\kix32.exe"
- Skriptparameter "logoff.kix"
So jetzt nur noch speichern der GPO und anschließen testen.
Wenn man nur das Anmeldeskript benötigt (warum auch immer) kann man das Skript auch für jeden User in den Benutzereinstellungen auf der Reiterkarte Profil einrichten ("kix32.exe login.kix"). Zum testen kann man das Skript auch erstmal in einem DOS Fenster laufen lassen um zu prüfen ob alles einwandfrei funktioniert.
Hier nochmal der Link zur offiziellen Kixtart Seite http://www.kixtart.org
So das war es erstmal soweit von mir, ich denke jetzt schickts auch. Ich habe in diesem Skript nicht alles umgesetzt was möglich ist, lediglich die Dinge welche bei mir aus der Praxis heraus wichtig sind. Deshalb sollte dieses Tutorial bitte nicht als Versuch einer Komplett Dokumentation von Kix und dessen Möglichkeiten gesehen werden sondern nur als Anregung und Starthilfe für An- und Abmeldeskripte in Windows Domänen. Eine interessante Erweiterung wäre z.B. eine Erweiterung dahin, das für Lizenzpflichtige Softwarepakete ein Datei mit den aktuell installierten Lizenzen generiert wird. Naja Ihre habt bestimmt auch noch ettliche Ideen was Sinnvoll ist oder auch nicht. Ich hoffe das im Forum noch ein wenig darüber diskutiert wird damit wir alle nach kurzer Zeit mit einer optimierten Skript Lösung arbeiten können. Denn eigentlich haben wir doch alle das gleiche Ziel?
Grüße und viel Spaß beim Skripten
PS: Ich bitte um nachsehen für eventuelle Fehler, für unklare Beschreibungen und ich hoffe ich habe nichts wichtiges vergessen. Because pobody is nerfect!
!!!Die Namen für die / den Server sowie die Freigaben, User- und Gruppennamen müssen natürlich an Eure Struktur angepasst werden!!!
login.kix - Ab hier den Inhalt markieren und in die Datei login.kix kopieren.
; ### Das Anmeldeskript soll sichtbar ausgeführt werden und das Fenster für das Skript erhält mit SETTITLE eine Bezeichnung.
; ### Hier könnte stehen der Firmenname, auch Datum und Uhrzeit oder Informationen für Mitarbeiter.
; ### Wobei diese auch mit einer MessageBox realisiert werden können.
;
SETCONSOLE("show")
SETCONSOLE("maximized")
SETTITLE("Anmeldeskript für Meine Domäne 2006")
;
;
; *********************
; Variablen deklarieren
; *********************
;
$FileServer="ServerNameFileServer"
; ### Name des Servers auf welchem sich die Freigaben befinden
; ### alternativ kann auch natürlich auch eine IP-Adresse angegeben werden
;
$ProtokollServer="ServerNameProtokollServer"
; ### Name des Servers auf welchem die Freigabe für die Dokumentation
; ### der An- und Abmeldungen sowie der Rechner Infos liegt
;
$PrintServer="ServerNameDruckWarteSchlangen"
; ### Name des Servers auf welchem (falls vorhanden) die Drucker
; ### eingerichtet und freigegeben sind die verbunden werden sollen
;
; **************************************
; Alle vorhandenen Netzlaufwerke löschen
; **************************************
use "*" /delete
;
;
; ***************************************
; Netzlaufwerke Gruppen bezogen verbinden
; ***************************************
if ingroup("grpBuchhaltung")
use f: "\\"+$Fileserver+"\Buchhaltung"
endif
if ingroup("grpLeitung")
use l: "\\"+$FileServer+"\Leitung"
endif
; ### Für weitere Freigaben einfach einen oberen Block kopieren und anfügen
;
;
; ****************************************
; Netzlaufwerke Benutzer bezogen verbinden
; ****************************************
if @userid="Administrator"
use x: "\\"+$ProtokollServer+"\login$"
;das ist die Freigabe wo die Login Protokolle abgelegt werden
;natürlich soll diese nur der Admininstrator sehen
endif
if @userid="Gast"
use p: "\\"+$Fileserver+"\public"
goto EndSharing
endif
;
;
; **************************************
; Netzlaufwerke für jeden User verbinden
; **************************************
use g: "\\"+$Fileserver+"\Gemeinsames"
use s: "\\"+$Fileserver+"\Schriftverkehr"
use v: "\\"+$Fileserver+"\Vorlagen"
use z: "\\"+$Fileserver+"\"+@userid+"$"
:EndSharing
;
;
; ********************
; Alte Drucker löschen
; ********************
If DELPRINTERCONNECTION ("\\"+$PrintServer+"\LaserJet") = 0
? "Alter Laserdrucker wurde erfolgreich entfernt"
Endif
;
;
; *****************
; Drucker verbinden
; *****************
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\LaserJetColor") = 0
? "Drucker Farblaserdrucker wurde verbunden"
Endif
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\LaserZentrale") = 0
? "Drucker Laserdrucker Zentrale wurde verbunden"
Endif
;
;
; *******************************
; Hardware Informationen auslesen
; *******************************
;
: ### Ausgabe auf die Datei "Rechnername_info.txt" umleiten anstelle des Bildschirmes
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\"+@Hostname+"_info.txt" ,1)
;
; ### Ab jetzt werden alle Printanweisungen in die Datei "Rechnername_info.txt" ausgegeben
? "Stand "@DATE" - "@TIME
? ""
? "*** Rechner Information ***"
?"NetBIOS Name: "@WKSTA
?"Letzter Login von: "@USERID
?"OS: "@PRODUCTTYPE" with "@CSD
?"CPU Modell: " @CPU
?"CPU Takt: "@MHZ " MHz"
?"Speicher: "MemorySize(0)" MB"
?"IP Adresse: " @IPADRESS0
?"MAC Adresse: "@ADDRESS
?""
;
; *******************************
; Software Informationen auslesen
; *******************************
;
; ### die installierte Software wird anhand der Uninstall Informationen der Registry ausgelesen, es wird
; ### solange gelesen bis im Reg Pfad keine Einträge mehr vorhanden sind, durch den Error wird dann die
; ### Schleife zur Sprungmark :Login verlassen
;
?"*** installierte Software ***"
$Index = 0
:Loop1
$KeyName = EnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $Index)
If @ERROR = 0
Goto DisplayCheck
Else
Goto Login
EndIf
:DisplayCheck
$Displayname = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$Keyname","DisplayName")
If @ERROR = 0
$Index = $Index + 1
?$Displayname
Goto Loop1
Else
Goto Login
endif
:Login
;
; ****************************
; Login Informationen pro User
; ****************************
;
; ### hier wird die Ausgabe wieder auf die Protokoll Datei für den jeweiligen Tag umgeleitet
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt" ,0)
;
; ### jetzt wird geprüft ob die Datei bereits existiert, wenn ja wird der Header nicht noch einmal in die Datei geschrieben
; ### da dieser bereits vorhanden ist.
$logExist=Exist("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt")
if $logExist = 0
? "+-------------------------------------------------------------------------------------------------+"
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦"
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦"
endif
$user = @userid+left(" ",(13-len(@userid)))
$client = @WKSTA+left(" ",(20-len(@WKSTA)))
$lserver = @LSERVER+left(" ",(18-len(@LSERVER)))
$lserver = right($lserver,(len($lserver)-2))
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦"
Exit
</font>
>>Ende Login.kix<<
<u><b>>>Logoff.kix<<</u></b>-- Ab hier den Inhalt markieren und in die Datei logoff.kix kopieren.
<font class="code">
; *****************************
; Logoff Informationen pro User
; *****************************
;
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt" ,0)
$logExist=Exist("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt")
if $logExist = 0
? "+-------------------------------------------------------------------------------------------------+"
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦"
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦"
endif
$user = @userid+left(" ",(13-len(@userid)))
$client = @WKSTA+left(" ",(20-len(@WKSTA)))
$lserver = @LSERVER+left(" ",(18-len(@LSERVER)))
$lserver = right($lserver,(len($lserver)-2))
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ o ¦"
Ende Logoff.kix
Funktion zum entfernen der Leerzeichen in der IP Adresse
Den Code
<?"IP Adresse: " @IPADRESS0>
; ### Dieser Code entfernt Leerzeichen aus der @IPADRESS0
$a = 0
$Myarray = Split(@IPADDRESS0 , " ")
For Each $Element In $MyArray
if $a = 0
$IP0 = $Element
endif
if $a= 1
$IP1= $Element
endif
if $a= 2
$IP2= $Element
endif
if $a = 3
$IP3 = $Element
endif
if $a = 4
$IP4 = $Element
endif
if $a = 5
$IP5 = $Element
endif
if $a = 6
$IP6 = $Element
endif
if $a= 7
$IP7 = $Element
endif
if $a= 8
$IP8 = $Element
endif
if $a = 9
$IP9 = $Element
endif
if $a = 10
$IP10 = $Element
endif
$a = $a + 1
Next
?"IP Adresse: " + +$IP0 + $IP1 + $IP2 + $IP3 + $IP4 + $IP5 + $IP6 + $IP7 + $IP8 + $IP9 + $IP10
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 23917
Url: https://administrator.de/contentid/23917
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
35 Kommentare
Neuester Kommentar
Moin CoachCoach,
auch wenn man/frau eigentlich keine Kommentare unter Tutorials schreiben sollte...
Vielen Dank!
@alle zur Info:
Wegen des erhöhten Interesses an KiX in letzter Zeit werde ich mich für die Einrichtung eines Bereichs "KiX" unterhalb "Entwicklung->Programmierung" einsetzen.
Zum besseren Wiederfinden.
Gruß Biber
P.S.
auch wenn man/frau eigentlich keine Kommentare unter Tutorials schreiben sollte...
Vielen Dank!
@alle zur Info:
Wegen des erhöhten Interesses an KiX in letzter Zeit werde ich mich für die Einrichtung eines Bereichs "KiX" unterhalb "Entwicklung->Programmierung" einsetzen.
Zum besseren Wiederfinden.
Gruß Biber
P.S.
; ### Auch dieser Code entfernt Leerzeichen aus der @IPADRESS0
Dim $Myarray = Split(@IPADDRESS0 , " ")
$IP =""
For Each $Element In $MyArray
$IP = $IP + Trim($Element)
Next
? "IP Adresse: " + $IP
;--oder dieser:
; ### Auch dieser Code entfernt Leerzeichen aus der @IPADRESS0
Dim $Myarray = Split(@IPADDRESS0 , ".")
$IP =Trim($MyArray)+"." +Trim($MyArray[1])+"." Trim($MyArray[2])+"." +Trim($MyArray[3])
? "IP Adresse: " + $IP
Ist der Einsatz der Software auch unter NT4.0 möglich, oder nur mit Active Directory ???
Hi,
danke für die Info.
Würden denn auch die Scripts laufen, bzw die Abfrage der Rechner nach Software und An und Abmeldezeiten.
Ich habe ein DC NT4.0 auf laufen ...
danke für die Info.
Würden denn auch die Scripts laufen, bzw die Abfrage der Rechner nach Software und An und Abmeldezeiten.
Ich habe ein DC NT4.0 auf laufen ...
Hallo,
ersteinmal vielen Dank für die Bereitstellung des Skriptes. Ich habs direkt mal bei uns eingebaut und getestet. Eine Frage hab ich aber noch:
Bei der Abfrage der Software-Keys gibt es unter WinXP welche, die einen richtigen Namen haben und auch andere, die ebend nach dem Muster {000-000-000-usw} aufgebaut sind.
Bei mir listet er diese z.b. garnicht auf, obwohl unter jedem einzelnen auch unter "DisplayName" ein Softwarename steht. Desweiteren komtm das Skript ein bisschen ins stocken, wenn auf einmal der Wert "DisplayName" nicht gefüllt ist:
Hier ein Beispiel:
Der Eintag DirectDrawEx hat z.B. keinen Wert. Deswegen gibt das Skript auch einen Fehler zurück und die Schleife beendet sich.
Vielleicht könnt Ihr dieses Problem lösen, da ich just heute erst mit Kix angefangen habe.
Wäre zumindest echt gut für die Einführung.
Ansonsten scheint Kix aber trotzalledem sehr mächtig zu sein. Naja, auf jedenfall mehr, als wie die alten Batch-Skripte.
Gruß, Stash
ersteinmal vielen Dank für die Bereitstellung des Skriptes. Ich habs direkt mal bei uns eingebaut und getestet. Eine Frage hab ich aber noch:
Bei der Abfrage der Software-Keys gibt es unter WinXP welche, die einen richtigen Namen haben und auch andere, die ebend nach dem Muster {000-000-000-usw} aufgebaut sind.
Bei mir listet er diese z.b. garnicht auf, obwohl unter jedem einzelnen auch unter "DisplayName" ein Softwarename steht. Desweiteren komtm das Skript ein bisschen ins stocken, wenn auf einmal der Wert "DisplayName" nicht gefüllt ist:
Hier ein Beispiel:
Der Eintag DirectDrawEx hat z.B. keinen Wert. Deswegen gibt das Skript auch einen Fehler zurück und die Schleife beendet sich.
Vielleicht könnt Ihr dieses Problem lösen, da ich just heute erst mit Kix angefangen habe.
Wäre zumindest echt gut für die Einführung.
Ansonsten scheint Kix aber trotzalledem sehr mächtig zu sein. Naja, auf jedenfall mehr, als wie die alten Batch-Skripte.
Gruß, Stash
Das nenne ich aber eine schnelle Antwort.
Ich versuche mal die Nr. für die Netzwerkkarte anzupassen.
Mit der Software sieht es so aus, dass die ersten Einträge nicht als Wort sondern als {000-000-000-usw} angezeigt werden. Ich denke dass diese eventuell als error ausgeworfen werden. Wenn dem so ist, wie kann ich es am besten umgehen ?
Ich versuche mal die Nr. für die Netzwerkkarte anzupassen.
Mit der Software sieht es so aus, dass die ersten Einträge nicht als Wort sondern als {000-000-000-usw} angezeigt werden. Ich denke dass diese eventuell als error ausgeworfen werden. Wenn dem so ist, wie kann ich es am besten umgehen ?
Was ist denn wenn die ersten Einträge unter der Software-Übersicht im Format {00000407-78E1-11D2-B60F-006097C998E7} aufgebaut sind ? Die werden wahrscheinlich als Fehler angezeigt und werden in der Übersicht nicht angezeigt, bzw. die Darstellung wird ab dem Eintrag gestoppt. Wie kann ich diese Einträge aber trotzdem mit protokollieren lassen oder vielleicht auslassen ?
Hi,
Super Script! Muss ich schon sagen. Die einzige Stelle die mir Probleme macht ist diese hier:
Da speichert er mir nix aufm Server.
Nur wenn ich es so abändern:
Aber dann legt er mir die Datein jeweils auf den Rechnern an
Ich vermute es ist nur nen simpler Syntax fehler aber kann mir da jemand helfen?
Gruß
Backfight
Super Script! Muss ich schon sagen. Die einzige Stelle die mir Probleme macht ist diese hier:
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\"+@Hostname+"_info.txt" ,1)
Da speichert er mir nix aufm Server.
Nur wenn ich es so abändern:
$result=ReDirectOutput ("C:\Inventar\"+@Hostname+"_info.txt" ,1)
Aber dann legt er mir die Datein jeweils auf den Rechnern an
Ich vermute es ist nur nen simpler Syntax fehler aber kann mir da jemand helfen?
Gruß
Backfight
Kommando zurück. Habs hinbekommen.
Mich würde freun, das wenn das Script abgearbeitet ist auf einem Client der sich an der domain anmeldet, so ein kleines fenster kommt mit:
Und dann Irgendwie sowas Guten Morgen/ Guten Tag %Username%
Je nach Zeit
Ist das möglich? Wenn ja wie? Ich bekomme die Syntax immernur irgendwie falsch hin *g*
Gruß
Backfight
Mich würde freun, das wenn das Script abgearbeitet ist auf einem Client der sich an der domain anmeldet, so ein kleines fenster kommt mit:
Datum
Zeit
User ID
Full Name
Privilegien
OS Vers.
Computername
Und dann Irgendwie sowas Guten Morgen/ Guten Tag %Username%
Je nach Zeit
Ist das möglich? Wenn ja wie? Ich bekomme die Syntax immernur irgendwie falsch hin *g*
Gruß
Backfight
Funktioniert nicht
Hier der Code:
da mach ich doch sicher was mit der syntax falsch oder?
Gruß
Backfight
Hier der Code:
;*
; Drucker den Abteilungen zuordnen
;*
$PrintServer = "DC"
if ingroup("TestGruppe")
If ADDPRINTERCONNECTION ("\\"+$PrintServer+"\NRG DSm725 Test") = 0
? "Drucker Laserdrucker Test wurde verbunden"
Endif
goto EndeDrucker
endif
:EndeDrucker
da mach ich doch sicher was mit der syntax falsch oder?
Gruß
Backfight
Moin backfive,
CoachCoach hat doch die "richtige" Syntax vorgekaspert. Ist doch ein Tutorial hier.
"Richtig" in obigem Sinne heißt: konform mit den beiden üblichen KiX-Referenzen "kix2010.doc" und "KiXhelp451.chm", die auf www.Kixtart.org empfohlen werden.
Siehe oben bei CoachCoach.
Um nochmal eine mögliche Fehlerquelle anzugeben:
Und bei Deinem letzten geposteten Beispiel ist entweder ein Anführungszeichen zuviel oder zuwenig.
Geht Dein Programm nun in diese InGroup-Verzweigung oder nicht oder weißt Du es nicht?
Gruß
Biber
Weil ich hab mal gegoogelt ...
WTF is "google"?...und jeder schreibt den ADPRINTERCONNECTION Befehl irgendwie anders!!??!
Ist das deren Problem oder Deins?CoachCoach hat doch die "richtige" Syntax vorgekaspert. Ist doch ein Tutorial hier.
"Richtig" in obigem Sinne heißt: konform mit den beiden üblichen KiX-Referenzen "kix2010.doc" und "KiXhelp451.chm", die auf www.Kixtart.org empfohlen werden.
Siehe oben bei CoachCoach.
Um nochmal eine mögliche Fehlerquelle anzugeben:
Syntax
ADDPRINTERCONNECTION ("printer name")
Parameters
Printer name
The (share)name of the printer to which to connect.
> das heißt, Du musst den Drucker unter seinem Freigabe-Namen ansprechen. Und...ADDPRINTERCONNECTION ("printer name")
Parameters
Printer name
The (share)name of the printer to which to connect.
When Windows NT connects to the printer, it may copy printer driver files to the local computer.
If the user does not have permission to copy files to the appropriate location, ADDPRINTERCONNECTION fails, and @16034 returns ERROR_ACCESS_DENIED
> Und das wäre auch das sinnvollste: erstmal den (Fehler-)Rückgabewert zu erfahren.If the user does not have permission to copy files to the appropriate location, ADDPRINTERCONNECTION fails, and @16034 returns ERROR_ACCESS_DENIED
Und bei Deinem letzten geposteten Beispiel ist entweder ein Anführungszeichen zuviel oder zuwenig.
Geht Dein Programm nun in diese InGroup-Verzweigung oder nicht oder weißt Du es nicht?
Gruß
Biber
Ich weiß es nicht ob das Script in die verzweigung geht. Ich weiß nicht mal wo der Wert dann ausgegeben wird wenn er nicht in den Zweig geht. Ich muss dazu sagen das ich Kix seid 4 oder 5 Tagen kenne/Benutze. Daher keinerleih Ahnung davon habe. Das ich meine vorherigen Probleme hinbekommen habe ist Glück gewesen. Erschwerend kommt dazu das ich auch das erste mal eine Domäne hochziehe / Daher nicht viel Ahnung habe. Also was kann ich machen?
Sorry wenn ich hier nerve
Gruß
Backfight
Sorry wenn ich hier nerve
Gruß
Backfight
Hat jemand eine Idee, warum dieses Script bei Windows 7 im Bereich Softwareinventar nicht mehr funktioniert?
--> Der Pfad besteht noch so in Windows 7
Hier zum Vergleich ein Eintrag aus meinem Uninstall Hive...
; Software Informationen auslesen
; *
;
; ### die installierte Software wird anhand der Uninstall Informationen der Registry ausgelesen, es wird
; ### solange gelesen bis im Reg Pfad keine Einträge mehr vorhanden sind, durch den Error wird dann die
; ### Schleife zur Sprungmark :Login verlassen
;
?"* installierte Software *"
$Index = 0
:Loop1
$KeyName = EnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $Index)
If @ERROR = 0
Goto DisplayCheck
Else
Goto Login
EndIf
:DisplayCheck
$Displayname = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$Keyname","DisplayName")
If @ERROR = 0
$Index = $Index + 1
?$Displayname
Goto Loop1
Else
Goto Login
endif
Hier zum Vergleich ein Eintrag aus meinem Uninstall Hive...
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver]
"DisplayName"="WinRAR"
"UninstallString"="C:\\Program Files\\WinRAR\\uninstall.exe"
"DisplayIcon"="C:\\Program Files\\WinRAR\\WinRAR.exe"
"NoModify"=dword:00000001
"NoRepair"=dword:00000001
Hallo zusammen
Ich habe versucht das Script nachzubauen, jedoch ohne Erfolg.
Hab zuerst die Version von Kix 461 runtergeladen und die kix32.exe in einen Ordner lokal mit dem Namen kix gelegt. Dorthin habe ich dann die login.kix erstellt, welche wie folgt aussieht.
Auf dem FileServer habe ich eine Freigabe login$ erstellt welche per \\ FileServer\login$ erreichbar ist und jeder User reinschreiben darf und kann.
Wenn ich nun eine CMD öffne mich auf den Ordner per CMD stelle wo die kix32.exe sich drin befindet und das login.kix und ich den Befehl absetzte:
Kix32.exe login.kix
Bekomme ich folgende Meldung:
ERROR: unexepected command!
Script: C:\Kix\login.kix
Line: 1
Hier mein Script:
Auch wäre es super Toll wenn ich z.b. die Keys von Windows, Office usw. auslesen könnte.
[Edit Biber] <font class=code> duch heutige Codeformatierung ersetzt. Siehe unten [/Edit]
Ich habe versucht das Script nachzubauen, jedoch ohne Erfolg.
Hab zuerst die Version von Kix 461 runtergeladen und die kix32.exe in einen Ordner lokal mit dem Namen kix gelegt. Dorthin habe ich dann die login.kix erstellt, welche wie folgt aussieht.
Auf dem FileServer habe ich eine Freigabe login$ erstellt welche per \\ FileServer\login$ erreichbar ist und jeder User reinschreiben darf und kann.
Wenn ich nun eine CMD öffne mich auf den Ordner per CMD stelle wo die kix32.exe sich drin befindet und das login.kix und ich den Befehl absetzte:
Kix32.exe login.kix
Bekomme ich folgende Meldung:
ERROR: unexepected command!
Script: C:\Kix\login.kix
Line: 1
Hier mein Script:
; ### Das Anmeldeskript soll sichtbar ausgeführt werden und das Fenster für das Skript erhält mit SETTITLE eine Bezeichnung.
; ### Hier könnte stehen der Firmenname, auch Datum und Uhrzeit oder Informationen für Mitarbeiter.
; ### Wobei diese auch mit einer MessageBox realisiert werden können.
;
SETCONSOLE("show")
SETCONSOLE("maximized")
SETTITLE("Anmeldeskript für Meine Domäne ")
;
;
; *
; Variablen deklarieren
; *
;
$FileServer="FileServer"
; ### Name des Servers auf welchem sich die Freigaben befinden
; ### alternativ kann auch natürlich auch eine IP-Adresse angegeben werden
;
$ProtokollServer="FileServer"
; ### Name des Servers auf welchem die Freigabe für die Dokumentation
; ### der An- und Abmeldungen sowie der Rechner Infos liegt
;
$PrintServer="FileServer"
; ### Name des Servers auf welchem (falls vorhanden) die Drucker
; ### eingerichtet und freigegeben sind die verbunden werden sollen
;
;
; Alle vorhandenen Netzlaufwerke löschen
;
use "*" /delete
;
;
; *
; Netzlaufwerke Gruppen bezogen verbinden
; *
;
if ingroup("grpFibu")
use f: "\\"+$FileServer+"\Fibu"
endif
if ingroup("grpITadministration")
use z: "\\"+$ FileServer +"\admin-win"
endif
if ingroup ("grpMarketing")
if m: "\\"+$ FileServer +"\marketing"
endif
if ingroup ("grpGef")
use n: "\\"+$ FileServer +"\gef"
endif
if ingroup ("grpControlling")
use k: "\\"+$ FileServer +"\controlling"
endif
if ingroup ("grpfile-sek-gf")
use o: "\\"+$ FileServer +"\file-sek-gef"
endif
; ### Für weitere Freigaben einfach einen oberen Block kopieren und anfügen
;
;
;
; Netzlaufwerke Benutzer bezogen verbinden
;
if @userid="Administrator"
use x: "\\"+$ FileServer +"\login$"
;das ist die Freigabe wo die Login Protokolle abgelegt werden
;natürlich soll diese nur der Admininstrator sehen
endif
;
;Netzlaufwerk für Admin1 und Admin2 weil dies ein IT-Administrations-Laufwerk ist
if @userid="Admin1"
use y: "\\"+$ FileServer +"\it-administration$"
endif
if @userid="Admin2"
use y: "\\"+$ FileServer +"\it-administration$"
endif
if @userid="Gast"
use p: "\\"+$Fileserver+"\public"
goto EndSharing
endif
;
;
;
; Netzlaufwerke für jeden User verbinden
;
use p: "\\"+$ FileServer +"\ablage"
use r: "\\"+$ FileServer +"\Projekte"
use t: "\\"+$ FileServer +"\Technik"
use u: "\\"+$ FileServer +"\"+@userid+"$"
:EndSharing
;
;
;
; Alte Drucker löschen
;
;If DELPRINTERCONNECTION ("\\"+$FileServer +"\LaserJet") = 0
;? "Alter Laserdrucker wurde erfolgreich entfernt"
;Endif
;
;
; *
; Drucker verbinden
; *
;If ADDPRINTERCONNECTION ("\\"+$FileServer +"\LaserJetColor") = 0
;? "Drucker Farblaserdrucker wurde verbunden"
;Endif
;If ADDPRINTERCONNECTION ("\\"+$FileServer +"\LaserZentrale") = 0
;? "Drucker Laserdrucker Zentrale wurde verbunden"
;Endif
;
;
; *
; Hardware Informationen auslesen
; *
;
: ### Ausgabe auf die Datei "Rechnername_info.txt" umleiten anstelle des Bildschirmes
$result=ReDirectOutput ("\\"+$FileServer +"\login$\"+@Hostname+"_info.txt" ,1)
;
; ### Ab jetzt werden alle Printanweisungen in die Datei "Rechnername_info.txt" ausgegeben
? "Stand "@DATE" - "@TIME
? ""
? "* Rechner Information *"
?"NetBIOS Name: "@WKSTA
?"Letzter Login von: "@USERID
?"OS: "@PRODUCTTYPE" with "@CSD
?"CPU Modell: " @CPU
?"CPU Takt: "@MHZ " MHz"
?"Speicher: "MemorySize(0)" MB"
?"IP Adresse: " @IPADRESS0
?"MAC Adresse: "@ADDRESS
?""
;
; *
; Software Informationen auslesen
; *
;
; ### die installierte Software wird anhand der Uninstall Informationen der Registry ausgelesen, es wird
; ### solange gelesen bis im Reg Pfad keine Einträge mehr vorhanden sind, durch den Error wird dann die
; ### Schleife zur Sprungmark :Login verlassen
;
?"* installierte Software *"
$Index = 0
:Loop1
$KeyName = EnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $Index)
If @ERROR = 0
Goto DisplayCheck
Else
Goto Login
EndIf
:DisplayCheck
$Displayname = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$Keyname","DisplayName")
If @ERROR = 0
$Index = $Index + 1
?$Displayname
Goto Loop1
Else
Goto Login
endif
:Login
;
;
; Login Informationen pro User
;
;
; ### hier wird die Ausgabe wieder auf die Protokoll Datei für den jeweiligen Tag umgeleitet
$result=ReDirectOutput ("\\"+$FileServer +"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt" ,0)
;
; ### jetzt wird geprüft ob die Datei bereits existiert, wenn ja wird der Header nicht noch einmal in die Datei geschrieben
; ### da dieser bereits vorhanden ist.
$logExist=Exist("\\"+$FileServer +"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt")
if $logExist = 0
? "+-------------------------------------------------------------------------------------------------+"
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦"
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦"
endif
$user = @userid+left(" ",(13-len(@userid)))
$client = @WKSTA+left(" ",(20-len(@WKSTA)))
$lserver = @LSERVER+left(" ",(18-len(@LSERVER)))
$lserver = right($lserver,(len($lserver)-2))
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦"
Exit
Ende Login.kix<<
Auch wäre es super Toll wenn ich z.b. die Keys von Windows, Office usw. auslesen könnte.
[Edit Biber] <font class=code> duch heutige Codeformatierung ersetzt. Siehe unten [/Edit]
Moin TxWcA,
möglicherweise hattest du die oben noch verwendete "alte" Codeformatierung für bare Münze bzw. für KiX-Code mit übernommen?
Diese -Klamotte?
ich habe deinen zitierten Code jedenfalls mal als "Code" formatiert, so dass du ihn mal jetzt kopieren kannst.
sollte es etwas anderes sein, dann machen wir natürlich weiter...
Grüße
Biber
möglicherweise hattest du die oben noch verwendete "alte" Codeformatierung für bare Münze bzw. für KiX-Code mit übernommen?
Diese -Klamotte?
ich habe deinen zitierten Code jedenfalls mal als "Code" formatiert, so dass du ihn mal jetzt kopieren kannst.
sollte es etwas anderes sein, dann machen wir natürlich weiter...
Grüße
Biber