MAJEG 10 Geschrieben 19. Januar 2009 Melden Teilen 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 :) Link zu diesem Kommentar
frr 11 Geschrieben 19. Januar 2009 Melden Teilen Geschrieben 19. Januar 2009 Hallo, sind die Clients alle XP Clients? Grüße Frank Link zu diesem Kommentar
Cybquest 36 Geschrieben 19. Januar 2009 Melden Teilen 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" Link zu diesem Kommentar
MAJEG 10 Geschrieben 20. Januar 2009 Autor Melden Teilen Geschrieben 20. Januar 2009 @Cybquest: Danke für die schnelle Hilfe, werd ich gleich mal ausprobieren. :D Link zu diesem Kommentar
MAJEG 10 Geschrieben 21. Januar 2009 Autor Melden Teilen 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 Link zu diesem Kommentar
Cybquest 36 Geschrieben 21. Januar 2009 Melden Teilen 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 Link zu diesem Kommentar
MAJEG 10 Geschrieben 21. Januar 2009 Autor Melden Teilen 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. Link zu diesem Kommentar
frr 11 Geschrieben 21. Januar 2009 Melden Teilen 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 Link zu diesem Kommentar
MAJEG 10 Geschrieben 21. Januar 2009 Autor Melden Teilen 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. Link zu diesem Kommentar
Cybquest 36 Geschrieben 21. Januar 2009 Melden Teilen 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" ... Link zu diesem Kommentar
MAJEG 10 Geschrieben 21. Januar 2009 Autor Melden Teilen 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. Link zu diesem Kommentar
Sunny61 806 Geschrieben 21. Januar 2009 Melden Teilen 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 Link zu diesem Kommentar
MAJEG 10 Geschrieben 18. März 2009 Autor Melden Teilen 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 Link zu diesem Kommentar
Cybquest 36 Geschrieben 18. März 2009 Melden Teilen 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 Link zu diesem Kommentar
zahni 554 Geschrieben 18. März 2009 Melden Teilen 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 Link zu diesem Kommentar
Empfohlene Beiträge