Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Powershell] Locatie Word-template veranderen in Word-bestan

Pagina: 1
Acties:

  • the_scientist
  • Registratie: November 2004
  • Laatst online: 15-11-2023
Hi all,

Wij maken gebruik van Word-bestanden welke gekoppeld zijn aan een template. Deze template stond op één van onze fileservers, maar is inmiddels verhuisd naar een andere fileserver waardoor bij het openen de template niet geladen wordt. Het gaat om honderden, zoniet duizenden, Word-bestanden, dus handmatig de nieuwe locatie invoeren wordt lastig. Ik ben er inmiddels achter dat de huidige Word-bestanden (vanuit 2007?) een open indeling hebben, en dat je ze kunt uitpakken d.m.v. een applicatie als Winzip. De locatie waar de template wordt bepaald is het bestand settings.xml.rels in de map word\_rels.

Nu wil ik graag d.m.v. Powershell deze verwijzing wijzigen, en naar mijn idee moet het volgende gebeuren:
- De mappenstructuur moet gescand worden op .docx-bestanden;
- Als gevonden: de locatie van de huidige template controleren, dit moet de locatie van de oude fileserver zijn;
- Zo ja: pad wijzigen naar nieuwe fileserver.

Inmiddels ben ik al een dag aan het zoeken, en het beste wat ik heb kunnen vinden is hoe je tekst in het document wijzigt: http://www.powershell.nu/...ments-through-powershell/
Op zich nuttig, nu kan het document iig. via Powershell gewijzigd worden... Maar is er iemand die mij op weg kan helpen met het wijzigen van de locatie van de template? Door de mappenstructuur heen itereren kom ik dan zelf wel uit.

Bij voorbaat dank!

  • Pimmerd
  • Registratie: Mei 2006
  • Laatst online: 14-11 21:09
Volgens mij wordt die locatie gewoon in het register opgeslagen: How to manage templates in 2007 Office programs and in 2010 Office programs
Controleer het eens, als het werkt, register scriptje schrijven en via een group policy aanpassen voor je hele domein.

Verwijderd

Opzich is het natuurlijk niet zo moeilijk om
code:
1
2
3
foreach($file in (dir *.docx )) {
    $file
}

te gebruiken om door alle bestanden heen te bladeren. Met -bijvoorbeeld- 7-zip kan je het bestand uitpakken. (.docx is intern gewoon een .zip).

Vergeet ook niet dat powershell XML ondersteuning heeft:
code:
1
$xml = ([xml](get-content -en utf8 "$pad")

Als je zo fortuinlijk bent dat de XML file altijd hetzelfde is opgebouwd is het vrij simpel om een value te vervangen door iets anders. Mogelijk moet je wat rommelen voordat je de juiste encoding hebt gevonden. Als ik me het goed herinner moet dat bij het opslaan ook. Maar daar heb ik momenteel geen code van liggen.

[ Voor 15% gewijzigd door Verwijderd op 22-10-2012 21:40 ]