Jump to content

per script in einer ini-datei text schreiben/ändern


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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 :)

Geschrieben

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"

Geschrieben

@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

Geschrieben

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

Geschrieben

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

Geschrieben

@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.

Geschrieben

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"
...

Geschrieben

@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.

  • 1 Monat später...
Geschrieben

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

Geschrieben

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

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!
Gast
Dieses Thema wurde für weitere Antworten geschlossen.
×
×
  • Neu erstellen...