Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Codeblock per VBscript in xml File einfügen

Frage Entwicklung Batch & Shell

Mitglied: RetroDude

RetroDude (Level 1) - Jetzt verbinden

15.06.2012 um 10:40 Uhr, 4096 Aufrufe, 14 Kommentare

Hallo

Ich muss auf bestimmten Clients den Inhalt einer in xml geschriebenen Datei ergänzen.
Folgender Codeblock muss im xml unten an angegebener Stelle eingefügt werden. Kann mir jemand sagen, wie ich dies mit VBScript am besten löse?
Das File liegt unter "c:\documents and settings\user\application data\programmname\vpn\file.f5c" auf den Clients.
Danke im Voraus!

01.
 ' ///////////////////////////////////     
02.
 <SITEM> 
03.
         <ADDRESS>server.domain.neu</ADDRESS> 
04.
         <USER></USER> 
05.
         <ALIAS></ALIAS> 
06.
         <ORIGIN>Server.domain.alt/Teil1</ORIGIN> 
07.
         <SSL_CERT_AUTOLOGIN>0</SSL_CERT_AUTOLOGIN> 
08.
         <SSL_CERT_LOGIN_TO_WEBTOP>0</SSL_CERT_LOGIN_TO_WEBTOP> 
09.
         <PASSWORD></PASSWORD> 
10.
         <OPTIONAL_FIELD></OPTIONAL_FIELD> 
11.
         <SAVEPASSWORDS>NO</SAVEPASSWORDS> 
12.
</SITEM> 
13.
 ' ///////////////////////////////////
01.
<?xml version="1.0" encoding="UTF-16" standalone="no"?> 
02.
 
03.
<PROFILE VERSION="2.0"> 
04.
   <SERVERS TRUSTED="YES"> 
05.
      <SITEM> 
06.
         <ADDRESS>Server.domain.alt/Teil1</ADDRESS> 
07.
         <USER>Username</USER> 
08.
         <ALIAS></ALIAS> 
09.
         <ORIGIN>Server.domain.alt/Teil1</ORIGIN> 
10.
         <SSL_CERT_AUTOLOGIN>1</SSL_CERT_AUTOLOGIN> 
11.
         <SSL_CERT_LOGIN_TO_WEBTOP>1</SSL_CERT_LOGIN_TO_WEBTOP> 
12.
         <PASSWORD></PASSWORD> 
13.
         <OPTIONAL_FIELD></OPTIONAL_FIELD> 
14.
         <SAVEPASSWORDS>NO</SAVEPASSWORDS> 
15.
      </SITEM> 
16.
       
17.
 ' ///////////////////////////////////     
18.
 ' Hier sollte der Codeblock eingefügt werden 
19.
 ' ///////////////////////////////////   
20.
       
21.
   </SERVERS> 
22.
   <CUSTOMDIALER> 
23.
      <ENTRY> 
24.
         <NAME>Network Access</NAME> 
25.
         <REDIALATTEMPTS>3</REDIALATTEMPTS> 
26.
         <REDIALSECONDS>60</REDIALSECONDS> 
27.
         <SHOWDIALINGPROGRESS>1</SHOWDIALINGPROGRESS> 
28.
         <PREVIEWUSERPASSWORD>1</PREVIEWUSERPASSWORD> 
29.
         <PREVIEWPHONENUMBER>1</PREVIEWPHONENUMBER> 
30.
         <SHOWMONITORINTASKBAR>1</SHOWMONITORINTASKBAR> 
31.
      </ENTRY> 
32.
  etc. 
33.
  etc. 
34.
  etc.
Mitglied: mayho33
15.06.2012, aktualisiert um 11:00 Uhr
Hi!

Du musst das XML-File erst einmal in ein Array einlesen. und dann entsprechen wieder schreiben
hier ein kleines Besipiel:

Dim objShell : Set objShell = WScript.CreateObject("Wscript.Shell")
Dim objFso : Set objFso = WScript.CreateObject("Scripting.FileSystemObject")
Dim CDir : CDir = objFso.GetParentFolderName(WScript.ScriptFullName)
Dim arr

Set File = objFso.OpenTextFile("c:\a.txt", 1) '1 = zum Lesen
tmp = file.ReadAll
arr = Split(tmp, vbNewLine)
file.Close
i = 0

Set File = objFso.OpenTextFile("C:\a.txt", 2) '2 = zum Schreiben
Do
file.WriteLine arr(i)
If InStr(1, arr(i), "text4",1) Then
file.WriteLine "Noch was anderes"
End if
i = i +1
Loop Until i = UBound(arr)
file.Close
Bitte warten ..
Mitglied: bastla
15.06.2012, aktualisiert um 15:20 Uhr
@mayho33
... wobei es sich eher anbieten würde, auf die zeilenweise Zerlegung zu verzichten:
01.
AppData = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%APPDATA%") 
02.
FilePath = AppData & "\programmname\vpn\file.f5c" 
03.
SplitString = "</SERVERS>" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
If Not fso.FileExists(FilePath) Then WScript.Quit 
07.
 
08.
XML = fso.OpenTextFile(FilePath).ReadAll 
09.
If InStr(XML, SplitString) = 0 Then WScript.Quit 
10.
 
11.
Parts = Split(XML, SplitString) 
12.
 
13.
XMLNew = Parts(0) & _ 
14.
vbCrLf & "         <ADDRESS>server.domain.neu</ADDRESS>" & _ 
15.
vbCrLf & "         <USER></USER>" & _ 
16.
vbCrLf & "         <ALIAS></ALIAS>" & _ 
17.
vbCrLf & "         <ORIGIN>Server.domain.alt/Teil1</ORIGIN>" & _ 
18.
vbCrLf & "         <SSL_CERT_AUTOLOGIN>0</SSL_CERT_AUTOLOGIN>" & _ 
19.
vbCrLf & "         <SSL_CERT_LOGIN_TO_WEBTOP>0</SSL_CERT_LOGIN_TO_WEBTOP>" & _ 
20.
vbCrLf & "         <PASSWORD></PASSWORD>" & _ 
21.
vbCrLf & "         <OPTIONAL_FIELD></OPTIONAL_FIELD>" & _ 
22.
vbCrLf & "         <SAVEPASSWORDS>NO</SAVEPASSWORDS>" & _ 
23.
vbCrLf & vbCrLf & SplitString & Parts(1) 
24.
 
25.
fso.CreateTextFile(FilePath).Write XMLNew
@RetroDude
Durch die Zeilen 1 und 2 sollte das dann als Logon-Script verwendbar sein.

Zu beachten wäre noch, dass in dieser Version keine Sicherungskopie der alten Datei erstellt wird!

Grüße
bastla
Bitte warten ..
Mitglied: RetroDude
15.06.2012 um 15:28 Uhr
Hallo

Danke Leute. Werde es nächste Woche angehen. Es wird auf jeden Fall aus dem Loginscript angeworfen.

Gruss und schönes Wochenende!
Bitte warten ..
Mitglied: RetroDude
15.06.2012 um 15:53 Uhr
Habs noch schnell probiert. Irgendwie schreibt er noch nichts ins File bzw. erstellt kein neues. Fehlercode erhalte ich keinen in Primalscript..
Bitte warten ..
Mitglied: bastla
15.06.2012 um 20:39 Uhr
Hallo RetroDude!

Dir werden ja die beiden Abbruchbedingungen aufgefallen sein - setz dort mal mit der Fehlersuche an, zB: steht auch tatsächlich "</SERVERS>" (und nicht etwa "</Servers>") - in der Datei?

Grüße
bastla
Bitte warten ..
Mitglied: RetroDude
17.06.2012 um 20:54 Uhr
Hallo Bastla!
Danke für die schnelle Antwort. Ja, diese Bedingungen habe ich natürlich berücksichtigt. Das Servers Tag ist so wie es oben im Script steht. Hab nicht gewusst, dass das ganze Case Sensitive behandelt wird. Da es aber gross geschrieben ist, sollte er dort nich scheitern. Den Pfad habe ich ebenfalls unter die Lupe genommen. werde am Dienstag noch mal testen. Ich begreife noch nicht ganz was er da genau prüft. Wieso noch XML, vorher?

Gruss und danke zum Voraus!

Retrodude
Bitte warten ..
Mitglied: bastla
17.06.2012 um 22:21 Uhr
Hallo RetroDude!
Ich begreife noch nicht ganz was er da genau prüft. Wieso noch XML, vorher?
Falls Du damit die Zeile 9 meinst: Dort wird nach "</SERVERS>" gesucht, da ja anhand dieses Strings dann geteilt werden soll ...

Grüße
bastla
Bitte warten ..
Mitglied: mayho33
18.06.2012, aktualisiert um 21:30 Uhr
Hi Bastla!

Klar, jeder löst es auf seine weise. Wobei ich bei deiner Variante hier duchaus Vorteile sehe. Ist in meiner Sammlung.....
Bitte warten ..
Mitglied: RetroDude
18.06.2012 um 23:02 Uhr
Hallo

Es ist mir schon bewusst, was er mit splittstring untersucht, ich frage mich nur wieso noch dieses XML vorangehend kommt.

Gruss
Bitte warten ..
Mitglied: bastla
19.06.2012 um 08:15 Uhr
Hallo RetroDude!

XML ist eine Variable, die den gesamten Dateiinhalt (siehe Zeile 8) enthält ...

Grüße
bastla
Bitte warten ..
Mitglied: RetroDude
19.06.2012 um 13:09 Uhr
Ah, danke Bastla. Jetzt hab ich freie Sicht.. Danke noch ma für deine Geduld und den kompetenten Beistand..

Gruss und schöne Woche

Retrodude
Bitte warten ..
Mitglied: RetroDude
19.06.2012 um 13:33 Uhr
Hei Bastla

Habs probiert. klappt nicht weil er irgendwie mit der Formatierung des xmls nicht klar kommt. Er liest nur Kauderwelsch aus dieser Datei. Habe mir die Inhalte der Variablen jeweils anzeigen lassen. Stimmt alles bis auf die XML Variable.

Gruss
Bitte warten ..
Mitglied: bastla
19.06.2012 um 20:35 Uhr
Hallo RetroDude!

Soferne Deine Datei im Unicode-Format gespeichert sein sollte, könntest Du die Zeilen 8 und 25 durch
XML = fso.OpenTextFile(FilePath, 1, True, True).ReadAll
und
fso.CreateTextFile(FilePath, True, True).Write XMLNew
ersetzen ...

Grüße
bastla
Bitte warten ..
Mitglied: RetroDude
20.06.2012 um 09:43 Uhr
Danke Bastla!

Das war das Problem. Danke für deine Hilfe!

Gruss
RetroDude
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Batch & Shell
gelöst BATCH Element aus XML-File auslesen (9)

Frage von pappkamerad zum Thema Batch & Shell ...

Entwicklung
gelöst Get ip from external txt file and use in vbscript (5)

Frage von thankusomuch zum Thema Entwicklung ...

Windows Server
gelöst Active Directory File Extension - Associated Program (11)

Frage von adm2015 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...