Top-Themen

Aktuelle Themen (A bis Z)

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 VBS - Blöcke in Array zusammenfassen - Dopplungen löschen

Mitglied: worker0815

worker0815 (Level 1) - Jetzt verbinden

26.02.2020 um 12:05 Uhr, 305 Aufrufe, 3 Kommentare

Hallo,

ich brauche bitte mal etwas Hilfestellung.
Ausgangslage - eine XML-Datei vom Tool WinAuthenticator.

Max Mustermann und Mira Musterfrau nutzen das Tool über eine zentrale XML-Datei. (das als Beispiel, die Personenanzahl in Real ist größer)
Die XML-Datei ist quasi bis zum Feierabend im Zugriff.

Karl Musterkind öffnet das Tool, legt sich neu an, und erzeugt damit einen neuen Block in der XML-Datei.
Er schließt das Tool. Die XML-Datei enthält seinen Block.

Schließen nun Max Mustermann oder Mira Musterfrau nach ihm das Tool, wird deren aktueller Stand in die XML-Datei zurück und damit überschrieben.
Karl Musterkind verschwindet.


1. Um dem Herr zu werden, soll alle 5 Minuten ein Skript über die XML-Datei laufen.
2. Alle Blöcke der Personen auslesen und in eine Masterdatei übergeben und dies fortlaufend schreiben.
Man erhält also in Folge nach mehrfacher Ausführung mehrere Blöcke mit doppelten Namensinhalt:
Max Mustermann, Mira Musterfrau, Max Mustermann, Mira Musterfrau, Karl Musterkind, Max Mustermann, Mira Musterfrau, Max Mustermann, Mira Musterfrau, Karl Musterkind
Insofern in Ordnung, da es mitunter sein kann, dass sich ein Person erneut hinzufügt und neue Schlüsselwerte erhält. Selbst löschen kann sie sich nicht.
Von daher wäre der aktuelle Created-Lastuser Zeitstempel wichtig.
3. Die Masterdatei wird gefiltert nach doppelten Blöcken nach Name. Der ältere Block soll gelöscht werden. (da benötige ich Hilfe)

Ich hoffe das war soweit verständlich.

Punkt 1 - mache ich per Aufgabenplanung


Ausgangs-XML:

Mit diesem Skript erledige ich Punkt 2:



Erhalte ich nun folgendes Ergebnis:


Wenn ich das Skript mehrfach ausgebe sieht das beispielsweise wie folgt aus:
(Max, Mira, Max, Mira und Karl ist nun auch dabei)


---
Nun muss noch Punkt 3 durchgeführt werden. Dabei benötige ich Unterstützung.
Die Doppelten Blöcke nach Namen erfassen und die ältesten löschen, so dass pro Person nur noch einer zurückbleibt.
Pro Block ein Array?
---
Das in eine Textdatei als Master.

Die Inhalte mit Kopf Master und Fußzeile würde ich dann Nachts zusammenfügen, so dass diese morgens als Ausgangs-XML den Personen zur Verfügung steht.

Vielen Dank für eure Hilfe!
Mitglied: 143127
26.02.2020, aktualisiert um 14:17 Uhr
Anmerkungen dazu.
  • 1. XML Dateien bearbeitet man nicht als reinen Text sondern lässt sie durch einen Parser laufen und erstellt daraus ein Objekt um ungültigen Markup zu vermeiden. Dafür gibt es in VBS/VBA das Objekt "MSXML2.DomDocument" mit dem man die XML Struktur durchlaufen und Knoten und Attribute als Ganzes auswählen kann. Man siehe https://analystcave.com/vba-xml-working-xml-files/
  • 2. Würde ich bei parallelem Zugriff auf eine Datenbank-Speicherung mit Transaktionen / Locks ausweichen.
Bitte warten ..
Mitglied: worker0815
27.02.2020 um 16:28 Uhr
Vielen Dank für die Unterstützung bzw. Anmerkung.
Ich habe es nun anders gelöst. Mit PowerShell:

Aufgabe 1:
#Alle 5 Minuten (06:00 - 21:00)

Damit werden mir alle Blöcke mit eigenen Namen in das Verzeichnis Pfad\Benutzer abgelegt.
Zusätzlich habe ich 2 Textdateien mit Kopf- und Fußzeile, vor und nach den Blöcken.

Aufgabe 1:
#Alle 5 Minuten (21:00)

Damit füge ich Kopfzeile, alle Blöcke der Benutzer und die Fußzeile wieder zu einer Datei zusammen und habe meinen Master.

Das reicht mir.
Bitte warten ..
Mitglied: 143127
27.02.2020, aktualisiert um 17:20 Uhr
Ich habe es nun anders gelöst. Mit PowerShell:
Naja hätte man auch gleich erwähnen können das man schon mal mit der PS mal hantiert hat, dann hätten wir hier nicht mit dem alten VBS rumschnüffeln müssen .
Noch ein Hinweis zu der Zeile
$xml = [xml](Get-Content -Path "\\localhost\APPS\Pfad\grpauth.xml")
Man sollte die XML besser so laden
Da ansonsten mit Get-Content nicht sichergestellt ist das das Encoding aus der XML korrekt verwendet wird sondern das Console Encoding bzw. das Encoding was Get-Content meint erkennen zu wollen! Wenn man das mit Get-Content lädt sollte man auch das Encoding entsprechend mit angeben.
Die Load-Methode dagegen berücksichtigt das Encoding das in der XML Declaration steht schon automatisch.
Bitte warten ..
Ähnliche Inhalte
Apache Server
Modsecurity Geoip Block Country ?
Frage von 119839Apache Server

Schönen Guten Tag Wer könnte mir bitte bei meinem Problem behilflich sein Ich habe ein neuen Server und wollte ...

Firewall
PfSense: Block deny trotz Regel
Frage von Daywalker91Firewall25 Kommentare

Hallo miteinander, ich hab gerade ein Problem das mich aufregt. Meine Firewall macht nicht das was ich will. Trotz ...

Windows Server
Applocker Block IE und Edge
Frage von C0nvertWindows Server45 Kommentare

Hey, Ich weiß einfach nicht wie ich per Applock den IE und Edge Browser blocken soll. Ich habe einen ...

Java

Unsynchronized Sleep in Synchronized Block

gelöst Frage von SaschaaaaaJava2 Kommentare

Hallo, klingt erstmal doof, ist aber ganz wichtig. Ich habe diesen Code: Das ist ein ungetester Code und dient ...

Neue Wissensbeiträge
Informationsdienste

Leistungsschutzrecht: Ein neuer Diskussionsentwurf liegt vor

Information von Frank vor 2 TagenInformationsdienste12 Kommentare

Anfang April (leider kein Scherz) hat das Bundesjustizministerium den nächsten ausformulierten Referentenentwurf für ein "erstes Gesetz zur Anpassung des ...

Instant Messaging

Videokonferenz oder Chatsystem für das Homeoffice

Information von Frank vor 2 TagenInstant Messaging6 Kommentare

Ich hatte es bereits in einem Kommentar gepostet, da ich aber viele Nachfragen dazu bekam, hier noch mal meine ...

Off Topic

Ein wenig Aufklärung über Corona von Bill Gates persönlich

Information von Frank vor 3 TagenOff Topic24 Kommentare

Amerika hat ein Problem: Die Arroganz des sehr klugen Präsidenten führte zur aktuellen Corona-Krise in den USA. Was jetzt ...

Off Topic
3D-Drucker gegen Corona - helft mit!
Information von DerWoWusste vor 3 TagenOff Topic12 Kommentare

Unter vorigem Link sind Anleitungen, wie man sich mit seinem 3D-Drucker an der Produktion (Druck) von Bauteilen für Atemmasken ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Lokale IP-Adresse
Frage von Kuerbis2020LAN, WAN, Wireless36 Kommentare

Lokale IP-Adresse: Woher bezieht Mein PC seine lokale IP-Adresse? Nenne den Namen des Dienstes und wo der Dienst installiert ...

Windows Server
Hyper-V VM vorm Admin absichern
Frage von MarabuntaWindows Server20 Kommentare

Hallo, wie bekomme ich eine VM in WS 2012 Hyper-V soweit abgetrennt, dass ein Admin ohne Passwort keinen (leichten) ...

DNS
DNS-Festlegung Windows
Frage von Kuerbis2020DNS12 Kommentare

DNS-Festlegung: Wo kann man das statische DNS festlegen und an welcher stelle wird das vorgenommen? A: Feste IP-Adresse für ...

Windows 10
Treiberupdates via Windows Update - bitte um Praxiserfahrungen
Frage von m.fesslerWindows 109 Kommentare

Hallo zusammen, wie ist eure Erfahrung mit Treiber-Updates über Windows Updates? Wobei meine Frage hauptsächlich "Fremdgeräte" von Familie und ...