ServicePack über Kix auslesen und in Datei umleiten
Hallo!
Ich würde gern die PCs ausfindig machen, die noch kein SP2 installiert haben...
Am besten übers vorhandene Kix LogIn-Skript
Es soll, für den Fall dass nur das SP1 installiert ist, den Computernamen in eine (txt)Datei schreiben. Am besten immer nur in eine Datei (bei Batchdateien wars ja ">>", wie es bei Kix ist, ???)
Hat jemand eine Lösung?
Thx im voraus....
Ich würde gern die PCs ausfindig machen, die noch kein SP2 installiert haben...
Am besten übers vorhandene Kix LogIn-Skript
Es soll, für den Fall dass nur das SP1 installiert ist, den Computernamen in eine (txt)Datei schreiben. Am besten immer nur in eine Datei (bei Batchdateien wars ja ">>", wie es bei Kix ist, ???)
Hat jemand eine Lösung?
Thx im voraus....
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 45792
Url: https://administrator.de/forum/servicepack-ueber-kix-auslesen-und-in-datei-umleiten-45792.html
Ausgedruckt am: 22.04.2025 um 16:04 Uhr
9 Kommentare
Neuester Kommentar
Moin,
Du musst dass mir READVALUE arbeiten und dann einfach eine IF Abfrage laufen lassen.
Der Key heisst
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion
$strTEMP = ReadValue ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\", "CSDVersion")
If @16034 = 0
? "Servicepack: $strTEMP @wksta"
if not $strTEMP="Service Pack 2"
IF Open( 9 , "C:\TEMP\log.TXT" , 5 ) = 0
$x = WriteLine( 9 , "@WKSTA $strTEMP" + Chr(13) + Chr(10) )
endif
Close(9)
endif
endif
Zwei Probleme könntest Du bekommen, nämlich:
1) Wenn zwei Clients gleichzeitig auf das Logfile zugreifen
2) Ein Client mehrmals einloggt. Dann erscheit er doppelt im Log
Darum würde ich statt einem Log für jeden Client einzeln schreiben, also statt
"C:\TEMP\LOG.TXT"
"C:\TEMP\" + @wksta + ".TXT" nehmen
Zudem muss natürlich C:\TEMP auf ein Netzlaufwerk (UNC oder Fest) verweisen, auf das geschreiben werden darf
Karo
Du musst dass mir READVALUE arbeiten und dann einfach eine IF Abfrage laufen lassen.
Der Key heisst
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion
$strTEMP = ReadValue ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\", "CSDVersion")
If @16034 = 0
? "Servicepack: $strTEMP @wksta"
if not $strTEMP="Service Pack 2"
IF Open( 9 , "C:\TEMP\log.TXT" , 5 ) = 0
$x = WriteLine( 9 , "@WKSTA $strTEMP" + Chr(13) + Chr(10) )
endif
Close(9)
endif
endif
Zwei Probleme könntest Du bekommen, nämlich:
1) Wenn zwei Clients gleichzeitig auf das Logfile zugreifen
2) Ein Client mehrmals einloggt. Dann erscheit er doppelt im Log
Darum würde ich statt einem Log für jeden Client einzeln schreiben, also statt
"C:\TEMP\LOG.TXT"
"C:\TEMP\" + @wksta + ".TXT" nehmen
Zudem muss natürlich C:\TEMP auf ein Netzlaufwerk (UNC oder Fest) verweisen, auf das geschreiben werden darf
Karo
Hi,
bei mir wird im Loginscript jedesmal beim Anmelden pro Rechner ein Eintrag im Logfile erzeugt (Rechnername, Datum, RAM, CPU, OS, ServicePack, Festplattengrösse, davon frei, ...).
Damit ich dann nicht alle Logs einzeln durchsehen muss, habe ich mit ein Script geschrieben, das jeweils die letzte Zeile jedes Logfiles ausliet und in ein gemeinsames Logfile schreibt.
So habe ich stehts den Überblick über den aktuellen Stand der Rechner.
Gruß,
Thomas
bei mir wird im Loginscript jedesmal beim Anmelden pro Rechner ein Eintrag im Logfile erzeugt (Rechnername, Datum, RAM, CPU, OS, ServicePack, Festplattengrösse, davon frei, ...).
Damit ich dann nicht alle Logs einzeln durchsehen muss, habe ich mit ein Script geschrieben, das jeweils die letzte Zeile jedes Logfiles ausliet und in ein gemeinsames Logfile schreibt.
So habe ich stehts den Überblick über den aktuellen Stand der Rechner.
Gruß,
Thomas
> ...habe ich mit ein Script
geschrieben...
Hast du das vielleicht noch...?!
*räusper* *zwinker*
geschrieben...
Hast du das vielleicht noch...?!
*räusper* *zwinker*
Klar hab ich das noch
;----------------------------------------
$path="\\Server1\Logs$\Logon\"
$tz=";"
$tempfile="%temp%\logfiles.txt"
;----------------------------------------
$jahr=@year
If Len(@MONTHNO)=1 $monat="0"+@MONTHNO Else $monat=@MONTHNO EndIf
If Len(@MDAYNO)=1 $tag="0"+@MDAYNO Else $tag=@MDAYNO EndIf
$pcfile=$path+"PCs_"+$jahr+$monat+$tag+".csv"
If Exist ($pcfile) Del ($pcfile) EndIf
Shell "%COMSPEC% /c DIR "+$path+"PCs /b > "+$tempfile
$handle1=FreeFileHandle()
$rc=Open($handle1,$pcfile,5)
$rc=WriteLine($handle1,"Rechner;User;Berechtigung;Datum;Uhrzeit;Prozessor;Taktfreq.;RAM;Betriebssystem;ServicePack;IP-Adresse;MAC-Adresse;Floppy aktiv;CDRom aktiv;Sitzungsart;HD-Größe;frei(MB);FileSystem;Auflösung"+@CRLF)
$handle2=FreeFileHandle()
$rc=Open($handle2,$tempfile,2)
$zeile=ReadLine($handle2)
While @ERROR=0
$handle3=FreeFileHandle()
$rc=Open($handle3,$path+"PCs\"+$zeile,2)
$line=ReadLine($handle3)
While @ERROR=0
$lastline=$line
$line=ReadLine($handle3)
Loop
$rc=WriteLine($handle1,SubStr ($zeile,1,Len($zeile)-4)+";"+$lastline+@CRLF)
$rc=Close($handle3)
$zeile=ReadLine($handle2)
Loop
$rc=Close($handle2)
$rc=Close($handle1)
Del ($tempfile)
$rc=MessageBox("Habe Fertig!",@ScriptName,64)
Run("Explorer $path")
Gruß,
Thomas
Hi,
frag doch einfach nach dem momentanen Workstationnamen ab. Wenn der übereinstimmt, dann überspringe das erstellen des Logs damit der TS nicht berücksichtigt wird. Bedeutet:
Als allererste Zeile
If NOT @wksta="TSSERVERNAME"
dann das Script wie gehabt
If @16034 = 0
.....
.....
und zu guter letzt ein zusätzliches
endif
da ja eine neue Schleife gebaut wurde.
Karo
PS: Alle 70 würden in eine Datei schreiben und das wäre wieder das evtl. Prob mit gleichzeitigem Zugriff.
frag doch einfach nach dem momentanen Workstationnamen ab. Wenn der übereinstimmt, dann überspringe das erstellen des Logs damit der TS nicht berücksichtigt wird. Bedeutet:
Als allererste Zeile
If NOT @wksta="TSSERVERNAME"
dann das Script wie gehabt
If @16034 = 0
.....
.....
und zu guter letzt ein zusätzliches
endif
da ja eine neue Schleife gebaut wurde.
Karo
PS: Alle 70 würden in eine Datei schreiben und das wäre wieder das evtl. Prob mit gleichzeitigem Zugriff.