MAJEG 10 Geschrieben 19. Januar 2009 Melden Geschrieben 19. Januar 2009 Hallo, bin in Script Programmierung ein Neuling deshalb die Frage: Wie kann man in einer ini-Datei eine Zeile ändern, oder einen Text anhängen? Pfad: C:\Programme\OCS Inventory Agent\service.ini Die Datei sieht wie folgt aus: [OCS_SERVICE] NoProxy=1 Server=test.net Pnum=80 Miscellaneous= /S /server:test.net /pnum:80 PROLOG_FREQ=4 OLD_PROLOG_FREQ=4 TTO_WAIT=2940 Ich bräuchte nun in der Zeile Miscellaneous einen Text hinzugefügt -> "/NP" Die neue Zeile sollte dann so aussehen: Miscellaneous= /S /server:test.net /pnum:80 /NP Weiters sollte man dieses Script per Gruppenrichtlinie einer Domäne verteilen können. Die Datei und der Programmpfad lautet auf allen Clients gleich. Kann mir jemand bitte weiterhelfen, Danke schön im voraus :)
frr 11 Geschrieben 19. Januar 2009 Melden Geschrieben 19. Januar 2009 Hallo, sind die Clients alle XP Clients? Grüße Frank
Cybquest 36 Geschrieben 19. Januar 2009 Melden Geschrieben 19. Januar 2009 Per VBScript könnte man in Deinem Fall einfach den String suchen und ersetzen lassen: Set MyFiles = CreateObject("Scripting.FileSystemObject") varDatei="C:\Programme\OCS Inventory Agent\service.ini" Set f = MyFiles.OpenTextFile(varDatei, 1) Text = f.ReadAll varSearch="Miscellaneous= /S /server:test.net /pnum:80" varReplace="Miscellaneous= /S /server:test.net /pnum:80 /NB" Set f = MyFiles.OpenTextFile(varDatei, 2, True) f.Write Replace(Text, varSearch, varReplace,1,-1,1) Sollten die Parameter hinter "Miscellaneous=" unterschiedlich sein, die Position jedoch egal, ginge für die 2 Variablen ggf. auch varSearch="Miscellaneous=" varReplace="Miscellaneous= /NB"
MAJEG 10 Geschrieben 20. Januar 2009 Autor Melden Geschrieben 20. Januar 2009 @Cybquest: Danke für die schnelle Hilfe, werd ich gleich mal ausprobieren. :D
MAJEG 10 Geschrieben 21. Januar 2009 Autor Melden Geschrieben 21. Januar 2009 @Cybquest: Danke das Script funktioniert wunderbar. Jetzt hätte ich noch eine Frage, wenn ich nun dieses Script per GPO beim starten eines Clients verteile. Wie kann man nun eine Abfrage vor das Script setzen, ob dieses schon mal durchgeführt wurde, und wenn "ja" - > dann abgebrochen wird. Sonst wird immer die die gewünschte zeile abgefragt, und durch die neue ersetzt. Danke für die Hilfe
Cybquest 36 Geschrieben 21. Januar 2009 Melden Geschrieben 21. Januar 2009 Z.B. im Script selbst einfach prüfen lassen, ob der String schon korrekt gesetzt ist (bzw. ob er noch nicht gesetzt ist): Set MyFiles = CreateObject("Scripting.FileSystemObject") varDatei="C:\Programme\OCS Inventory Agent\service.ini" Set f = MyFiles.OpenTextFile(varDatei, 1) Text = f.ReadAll varSearch="Miscellaneous= /S /server:test.net /pnum:80" varReplace="Miscellaneous= /S /server:test.net /pnum:80 /NB" If Instr(Text,varReplace)=0 then Set f = MyFiles.OpenTextFile(varDatei, 2, True) f.Write Replace(Text, varSearch, varReplace,1,-1,1) End If
MAJEG 10 Geschrieben 21. Januar 2009 Autor Melden Geschrieben 21. Januar 2009 @Cybquest: Danke für die schnelle Antwort. Habe es bereits ausprobiert, funktioniert super. Wie gesagt bin doch ein neuling -> jedoch habe ich jetzt schon viel dazugelernt.
frr 11 Geschrieben 21. Januar 2009 Melden Geschrieben 21. Januar 2009 Hallo, hättest Du auf meine Frage geantwortet, dann hättest Du Dir vielleicht den ganzen Zirkus sparen können. Wenn es alles XP Clients sind, dann hättest Du das über die Gruppenrichtlinienerweiterungen durchführen können und damit nicht eine einzige Skriptzeile schreiben müssen. Grüße Frank
MAJEG 10 Geschrieben 21. Januar 2009 Autor Melden Geschrieben 21. Januar 2009 @Frr. Sorry das ich nicht gleich geantwortet habe, aber es sind nicht alle Clienst WinXp. Es gibt nioch ein paar Raritäten die unter Win200 laufen. Aber trotzdem danke für die Antwort und dein angebotene Holfe. :) – @Cybquest: Ich hätte da noch eine Frage zu vbs Scripts -> Kann man eine Setup.exe via vbs Script starten, und auch überprüfen ob dieses Programm bereits installiert ist? Das Programm besitzt den Namen SingleLogon und wird unter dem Standardpfad C:\Programme\SingleLogon\... installiert. Dies würde wieder via GPO auf Win2000 und WinXp Maschinen durchgeführt werden müssen. Dazu hätte ich dieses vbs Script und die Setup.exe in die GPO abgelegt und beim starten der Clients wird dieses aktiviert.
Cybquest 36 Geschrieben 21. Januar 2009 Melden Geschrieben 21. Januar 2009 Machen kann man fast alles ;) Wenn das Programm auch eine MSI bietet, könnte man es einfach über GPO verteilen. Stichworte zu VB-Script: Überprüfen, ob eine Datei vorhanden ist: if MyFiles.FileExists(varDatei) then ... Exe starten: Set WShell=wscript.CreateObject("Wscript.Shell") WShell.Run "Setup.exe" ...
MAJEG 10 Geschrieben 21. Januar 2009 Autor Melden Geschrieben 21. Januar 2009 @Cybquest: Das MSI Pakete funktionieren per GPO hab ich auch gerade nachgelesen, iach habe aber für dieses Paket keine MSI nur eine EXE. Danke. Werd versuchen mir eines zu erstellen.
Sunny61 816 Geschrieben 21. Januar 2009 Melden Geschrieben 21. Januar 2009 Das MSI Pakete funktionieren per GPO hab ich auch gerade nachgelesen, iach habe aber für dieses Paket keine MSI nur eine EXE. Macht nix, wenn es die entsprechenden Parameter gibt, sollte es ganz einfach sein. Schau dir doch mal dieses Beispiel an: Eigenbau und Erstellung eines MSI Paketes am Beispiel des Internet Explorer 7
MAJEG 10 Geschrieben 18. März 2009 Autor Melden Geschrieben 18. März 2009 Hallo Cybquest, ich habe das Script bei dem du mir geholfen hast bereits per GPO verteilt, hat wunderbar funktioniert. Danke nochmals. Jetzt hätte ich dazu eine neue Frage, hab schon in einigen Foren nachgestöbert aber so richtig bin ich nich zu einem Ende gekommen. Wie kann man das Script so umbauen das man einen Text ersetz (dies funktioniert bereits) und 2 weitere Zeilen in die Datei schreiben (gleich angefügt und ohne Zeilen in der Datei zu löschen)? Funktioniert das eventuell mit ?? Const SuchText = "bestimmter Text" Const NeuText= "einzufügender Text" For i = 0 To UBound(Lines) If Instr(LCase(Lines(i)), LCase(SuchText)) Then NewFile.WriteLine Neutext NewFile.WriteLine Lines(i) Ich wollte dies beim derzeitigen Script anfügen: Derzeitiger Code: Set MyFiles = CreateObject("Scripting.FileSystemObject") varDatei="C:\Programme\OCS Inventory Agent\service.ini" Set f = MyFiles.OpenTextFile(varDatei, 1) Text = f.ReadAll varSearch="Miscellaneous= /S /server:test.net /pnum:80" varReplace="Miscellaneous= /S /server:test.net /pnum:80 /NB" If Instr(Text,varReplace)=0 then Set f = MyFiles.OpenTextFile(varDatei, 2, True) f.Write Replace(Text, varSearch, varReplace,1,-1,1) End If
Cybquest 36 Geschrieben 18. März 2009 Melden Geschrieben 18. März 2009 Ich wollte dies beim derzeitigen Script anfügen: Ja nu... dann mach's doch :D Set MyFiles = CreateObject("Scripting.FileSystemObject") varDatei="C:\Programme\OCS Inventory Agent\service.ini" Set f = MyFiles.OpenTextFile(varDatei, 1) Text = f.ReadAll varSearch="Miscellaneous= /S /server:test.net /pnum:80" varReplace="Miscellaneous= /S /server:test.net /pnum:80 /NB" If Instr(Text,varReplace)=0 then Set f = MyFiles.OpenTextFile(varDatei, 2, True) f.Write Replace(Text, varSearch, varReplace,1,-1,1) f.WriteLine "Ne Zeile am Ende" f.WriteLine "Noch ne Zeile am Ende" End If
zahni 566 Geschrieben 18. März 2009 Melden Geschrieben 18. März 2009 Geht auch mit Kixtart mit der funktion "writeprofilestring" . Dazu gibt es nähmlich in Windows eine (alte ;) ) API, die Kixtart hier benutzt. Ist genau eine Zeile Code.. -Zahni
Empfohlene Beiträge