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 IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Automatisierte Verzeichnisstruktur und Dokument Anpassungen

Mitglied: SIPSIP

SIPSIP (Level 1) - Jetzt verbinden

17.08.2018 um 14:22 Uhr, 1244 Aufrufe, 12 Kommentare, 3 Danke

Hallo zusammen

Ich soll für folgendes Szenario eine halb automatisierte Lösung finden.
1. Projektnummer und Name wird durch ein bestehendes Tool erfasst
2. Dieses Tool erstellt ein Verzeichnis auf einem Share mit Projektnummer und Namen
3. Das Tool kopiert eine Vorlagen-Ordner mit diversen Unterverzeichnissen, Word und Excel Dokumente in das neu erstellte Verzeichnis auf dem Share
4. Nun sollen in allen Word und Excel Dokumenten gewisse Platzhalter ersetzt werden. Die Werte die in den Platzhaltern eingefügt werden sollen, müssen natürlich irgendwie vorher definiert werden.

Mein Vorgänger wollte dies alles mit einem Frage/Antwort Powershell Script lösen. Unsere Anwender die das Script bedienen, sollen aber selber Anpassungen machen können, was die Lösung für mich unbrauchbar macht. Außerdem verzeiht das Script keine Schreibfehler und mann muss von vorne beginnen. Des weiteren möchte ich nicht zu viel Zeit aufwenden und ein riesiges Script schreiben. Wir reden von ca. 50 Eingaben und entsprechend vielen Platzhaltern in den Dokumenten verteilt.

Ich dachte mir sowas wie eine Excel Tabelle wo unsere Anwender alle Werte für die Platzhalter eintragen können. Auf irgendeine Art und weise sollen diese Werte nun in die Dokumente geschrieben werden, dabei ging mir der Serienbrief von Word durch den Kopf. Jedoch soll es bei mir ja mehrere Dokumente anpassen und unter anderem auch Excel.

Mein weiteres Vorgehen wäre eine Lösung mit Serienbrief und Powershell gemischt aber ich wollte mich zuerst erkundigen ob es nicht einen einfacheren Weg gibt. Evtl. kennt ihr ja sogar eine fertige Lösung, ohne dass ich das Rad neu erfinden muss.

Grüsse
Mitglied: manuel-r
LÖSUNG 17.08.2018 um 14:47 Uhr
Mein Vorgänger wollte dies alles mit einem Frage/Antwort Powershell Script lösen.

Frage-Antwort ist doof. Da hast du recht.

Was du machen kannst wäre folgendes:
  • Zuerst nimmst du alle deine Word- und Excel-Dokumente und baust dir daraus Kopiervorlagen. In den Dokumenten schreibst du überall wo irgendwas ausgefüllt werden soll deine Platzhalter (bspw: [Kunde], [Projekt], ...)
  • Dann erstellst du das Excel-Sheet mit den Quellangaben. In einer der Spalten muss deine Projektnummer stehen.
  • Jetzt schreibst du ein Script - Powershell bietet sich da an - das zuerst in dem Excel-Sheet die Zeile sucht in der die Projektnummer steht. Danach holt es in dieser Zeile alle notwendigen Informationen
  • Mit diesen Informationen machst du jetzt in jeder deiner Vorlagen ein Suchen-Ersetzen und tauschst Platzhalter durch die echte Info.
  • Zum guten Schluss dann die Vorlagendokumente unter neuem Namen im Projektverzeichnis speichern.
  • Fertig.

Ich würde allerdings die Projektinformationen nicht in einem Excel-Sheet ablegen sondern eine Datenbank (geht auch mit Access) dafür nehmen.

Des weiteren möchte ich nicht zu viel Zeit aufwenden und ein riesiges Script schreiben.

So ganz ohne Zeitaufwand wird es aber nichts werden. Solche Scripte/Tools fallen nicht vom Himmel und ich kennen auch keinen Generator, der das mal eben zusammenklicken lässt.

Manuel
Bitte warten ..
Mitglied: NetzwerkDude
LÖSUNG 17.08.2018 um 15:53 Uhr
Naja, die User müssen es ja nicht "live" in die Konsole eingeben, sondern die können es in eine "Eingabedatei" machen, die dann das Powershellskript auswertet.

Was du dazu brauchst steht in dem Artikel:
https://kevinmarquette.github.io/2016-11-06-powershell-hashtable-everyth ...
1. Reading directly from a file
2. Splatting hashtables at cmdlets

Dabei muss dein PS Skript natürlich die eingabeparameter richtig intepretieren, also über "ValueFromPipelineByPropertyName" die Werte einlesen.

Die Word/Excel dokumente kannst du mit Powershell über "Com Objekte" editieren
Bitte warten ..
Mitglied: colinardo
LÖSUNG 17.08.2018, aktualisiert 14.09.2018
Servus.
Zitat von NetzwerkDude:
Die Word/Excel dokumente kannst du mit Powershell über "Com Objekte" editieren
Oder schneller geht's bei Bedarf auch ohne das lahme COM .

Grüße Uwe
Bitte warten ..
Mitglied: NetzwerkDude
17.08.2018 um 21:04 Uhr
Ah, sehr schön, damit braucht man nicht mal office installiert zu haben
Bitte warten ..
Mitglied: SIPSIP
06.09.2018 um 18:17 Uhr
Hallo Uwe

Besten Dank für das Script, scheint genau das richtige für mein Anliegen zu sein.
Dabei habe ich nur die Frage ob dies auch mit einer Excel Tabelle statt einem einer txt funktionieren würde.
Ich weiss, ich sollte dabei auch noch etwas zu tun haben, jedoch fehlt mir gerade die Zeit und evtl. hast du ja bereits ein solches Script oder weisst wie das am Einfachsten lösbar gemacht wird....

excel - Klicke auf das Bild, um es zu vergrößern

Danke!

Grüsse
Patrick
Bitte warten ..
Mitglied: colinardo
LÖSUNG 06.09.2018 um 18:44 Uhr
Klar, mach dir einfach eine CSV, die Importierst du via Import-CSV und arbeitest die Zeilen per ForEach ab.
Bitte warten ..
Mitglied: SIPSIP
14.09.2018, aktualisiert um 16:13 Uhr
Hast du eine Idee wieso ich den Fehler erhalte, habe nur den Pfad im Script angepasst. .Net Framework 4.5 und Powershell 3 sind auch installiert...?

ps-fehler - Klicke auf das Bild, um es zu vergrößern

Wenn ich vor die Letzte Zeile noch "Write-Output $parametertable" schreibe, werden mir meine im parameters.txt definierten Werte aus meiner Sicht richtig dargestellt. Hab nun 2 Stunden damit verbracht herauszufinden was das Problem sein soll, leider ohne Erfolg....
Bitte warten ..
Mitglied: colinardo
LÖSUNG 14.09.2018, aktualisiert um 16:56 Uhr
Kleiner Typo beim Einlesen mit Get-Content, da kam dann ein Array statt einer Hashtable raus, sorry.
Bitte warten ..
Mitglied: SIPSIP
17.09.2018 um 11:04 Uhr
Perfekt, funktioniert nun, vielen Dank du bist der Beste.

Bei Excel Tabellen funktionierte es bei meinen bisherigen Tests einwandfrei, jedoch hat es bei Word Dokumenten teils Probleme alle Platzhalter zu erkennen und ersetzen. Auch bei mehrmaliger Ausführung findet er die dann nicht aber bei einem neuen Test funktionieren dann einige davon wieder....

Umlaute habe ich aus den Platzhaltern entfernt um Fehler dadurch zu vermeiden. Wenn ich das Script richtig verstehe ersetzt es die Platzhalter nicht direkt im Word, sondern das Dokument wird in reiner Textform geöffnet. Also sollte doch die Formatierung hier kein mögliches Problem dafür sein oder?
Sollte ich bei den Platzhaltern auf eine spezielle Schreibweise oder Formatierung achten?

Momentan sehen meine Platzhalter wie folgende aus und stehen auch so irgendwo im Dokument:
<PLZ>
<Datum>
<Ansprechspartner>
etc.

Noch eine andere Frage, habe bisher keine Lösung dazu gefunden... Kann ich Powershell irgendwie beibringen, dass es in den zu ersetzenden Texten (z.B. oben Replace1) Umlaute benutzen kann/soll?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 17.09.2018, aktualisiert um 11:42 Uhr
Zitat von SIPSIP:
Umlaute habe ich aus den Platzhaltern entfernt um Fehler dadurch zu vermeiden.
Die machen nichts wenn du beim Import der Textdatei das richtige Encoding verwendest. Der Rest wird alles intern in UTF8 erledigt.
Wenn ich das Script richtig verstehe ersetzt es die Platzhalter nicht direkt im Word, sondern das Dokument wird in reiner Textform geöffnet.
Nein, das Dokument wird als ZIP-Archiv geöffnet und die entsprechenden XML-Parts als XML-Document eingelesen, dann die Nodes auf die Platzhalter durchsucht, ersetzt, gespeichert und das ganze wieder dem ZIP hinzugefügt.

Sollte ich bei den Platzhaltern auf eine spezielle Schreibweise oder Formatierung achten?
Ja deine Platzhalter nutzen leider größer und kleiner Zeichen (<>), das ist gerade bei XML ein Problem da müsste man noch aufwendiger eingreifen da diese im Dokument in &lt; und &gt; gewandelt werden und in separaten XML-Knoten landen. Also am besten keine XML oder HTML spezifischen Sonderzeichen nutzen, sondern z.B. doppelte Hashes (##Platzhalter##) oder ähnliches.
Das Skript ist für einfache Ersetzungen gedacht ohne dabei komplexe Formatierungen mit einzubeziehen.
Noch eine andere Frage, habe bisher keine Lösung dazu gefunden... Kann ich Powershell irgendwie beibringen, dass es in den zu ersetzenden Texten (z.B. oben Replace1) Umlaute benutzen kann/soll?
Klar das Encoding beim Import (Get-Content) mit dem Parameter -Encoding anpassen. bei UTF8 Datei so
Oder -Encoding Default wenn es sich um Standard ANSI handelt. Das Encoding erkennt Powershell normalerweise automatisch, aber nur sofern die Datei es im Header auch definiert.
Bitte warten ..
Mitglied: SIPSIP
21.09.2018, aktualisiert um 16:13 Uhr
Super, danke für deine Unterstützung!

Habe noch etwas herausgefunden, das ich hier auch noch erwähnen möchte, falls jemand das gleiche Problem haben sollte.

Es gibt leider etwas sehr unschönes bei dieser Lösung mit zip und XML Dateien. Dies war wahrscheinlich auch mein letztes Problem bei dem ich für Platzhalter immer < und > verwendete. Die Zeichen sind in XML wohl nicht die beste Wahl, jedoch war dies wohl nicht mein Problem.

Im XML werden Änderungen separat geschrieben. Wenn ich also meinen Platzhalter im Word von <Projekttitel> ändere zu rplcProjektTitel ohne das ganze Wort in Word zu ersetzen, wird dies im XML separat geschrieben. siehe Zeilen 11, 23 & 35.

Bitte warten ..
Mitglied: colinardo
21.09.2018, aktualisiert um 17:37 Uhr
Im XML werden Änderungen separat geschrieben
Wie oben geschrieben für "einfache" Platzhalter ohne einzelne separate Formatierungen von einzelnen Wörtern oder Zeichen des Platzhalters klappt das noch. Sobald du also auf den Platzhaltertext unterschiedliche Formatierungen vornimmst Rechtschreibung anwendest etc. geht es nicht mehr. Wie sollte der Algorithmus also jetzt die Formatierung die du auf den Platzhalter angewendet hast auf deinen ersetzten Text anwenden ? Dafür bräuchte man schon eine Glaskugel.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Script anpassung
gelöst Frage von MultiplexyBatch & Shell14 Kommentare

Hallo zusammen, Ich benötige mal eure Hilfe, es geht darum den folgenden Code anzupassen, das die letzten 2 Ordner ...

Windows Server
GPO Anpassung
Frage von LKaderavekWindows Server3 Kommentare

Hallo, ich habe einen Terminal-Server übernommen, der sehr restriktiv mit GPOs geregelt ist. Funktioniert ganz gut und möchte daran ...

Windows Server
Massen Anpassung AD
gelöst Frage von XY2018Windows Server10 Kommentare

Hallo, ich möchte bei allen Userkonten im Active Directory die Rufnummer auf das E.164 Standard anpassen. Kurze google Suche ...

Batch & Shell
Anpassung BAT-File
gelöst Frage von Fizzo361Batch & Shell2 Kommentare

Hi Forum, ich habe eine recht simple frage an euch, ich habe dieses Script vorliegen, das Funktioniert auch einwandfrei. ...

Neue Wissensbeiträge
Off Topic
Wann gibt es mehr Bits als Atome?
Information von AnkhMorpork vor 1 TagOff Topic11 Kommentare

Boys 'n' girls, Freitagslektüre: Wenn Computertechnologie und Digitalisierung sich so weiterentwickeln, könnte die Zahl der digitalen Bits in 150 ...

Sicherheits-Tools

TrendMicro Worry-Free Business Security (WFBS) 10.0 SP1 - Critical Patch veröffentlicht!

Information von VGem-e vor 1 TagSicherheits-Tools3 Kommentare

Servus, siehe hier. Download-Link hier swfbs/10.0WFBS_100_SP1_All_MSA_11.7_HFB1073.exe Nähere Infos habe ich online noch nicht gefunden. Gruß VGem-e

Humor (lol)

Wie verhindere ich, dass Websitebesucher die Werbecookies abschalten?

Information von DerWoWusste vor 3 TagenHumor (lol)9 Kommentare

Ich habe gerade auf die Antwort gefunden: ich täusche einen langwierigen Änderungsprozess vor und biete nebenbei einen Cancelbutton, den ...

Sicherheit

Windows Setup erlaubt elevation of privilege plus DC Updates

Information von DerWoWusste vor 3 TagenSicherheit4 Kommentare

Eine interessante neue Sicherheitslücke. Details gibt es wenig, edit: doch, jetzt hab ich was: aber die klare Empfehlung: ...

Heiß diskutierte Inhalte
Windows Server
Administratorrechte im Dateisystem - Windows Server 2019 - DC
Frage von Indy06Windows Server19 Kommentare

Hallo, alle zusammen! Es kommt ja nun doch mal vor, dass man als Administrator auf einem Windows Server 2019, ...

Windows Server
MSI Installation als User auf TS funktioniert nicht
Frage von support-itWindows Server17 Kommentare

Guten Tag zusammen, ich habe eine Frage bezüglich der Installation von einer MSI-Datei auf einem Server 2016 Datacenter Terminalserver. ...

Zusammenarbeit
Leistungskennzahlen in einer Abteilung ermitteln
gelöst Frage von Stefan007Zusammenarbeit11 Kommentare

Hi zusammen, mich beschäftigt eine Frage zum Thema Leistungskennzahlen in einer Abteilung. Unsere Abteilung besteht aus 1st und 2nd ...

Off Topic
Wann gibt es mehr Bits als Atome?
Information von AnkhMorporkOff Topic11 Kommentare

Boys 'n' girls, Freitagslektüre: Wenn Computertechnologie und Digitalisierung sich so weiterentwickeln, könnte die Zahl der digitalen Bits in 150 ...

Administrator Magazin
08 | 2020 Cloud-First-Strategien sind inzwischen die Regel und nicht mehr die Ausnahme und Workloads verlagern sich damit in die Cloud – auch Datenbanken. Dort geht es aber nicht nur um die Frage, wie die Datenbestände in die Wolke zu migrieren sind, sondern auch darum, welche Datenbank ...