Question Retrouver des UNC dans un document Word

Plus d'informations
il y a 13 ans 2 mois #8478 par Selenae
Bonjour à tous,

Je dois migrer notre fileserver vers un DFS. Pour eviter un max de problemes pour les utilisateurs j'aimerais ecrire un script qui permettrais dans un premier temps de :
1. Lister les documents Word/Excel/Powerpoint contenant un lien UNC.

2. Remplacer ce lien UNC vers le lien DFS

Je rencontre un problème sur le point 1 pour les documents Word

Tout d'abord voici un script qui sur base d'un fichier de correspondance contenant par exemple :
[code:1]original,modifed
\\extn10\coco,\\extn10.test.adms\coco
\\mouahha\sdkfsmlkf,\\mouahha.nrb.adms\sdkfsmlkf[/code:1]
et qui va remplacer un path existant par le path cité dans mon fichier. Ca, ca marche !
[code:1]
$application = New-Object -comobject word.application
$application.visible = $false
#$words = Get-Content C:\test\unc.txt
$words = Import-Csv C:\test\unc.txt
$docs = Get-ChildItem -Path C:\test -Include *.doc,*.docx -Recurse
Foreach ($doc in $docs)
{
$document = $application.documents.open($doc.FullName)
$selection = $application.Selection
$matchCase = $false
$matchWholeWord = $true
$matchWildCards = $false
$matchSoundsLike = $false
$matchAllWordForms = $false
$forward = $true
$wrap = 1
$format = $true
$replace = 2
Foreach ($word in $words)
{
$findText = $word.modifed
$replaceWith = $word.original
$exeRTN = $selection.find.execute($findText,$matchCase,$matchWholeWord,$matchWIldCards,$matchSoundsLike,
$matchAllWordForms,$forward,$wrap,$format,$replaceWith,$replace)
if ($exeRTN -match \"True\"«»)
{
Write-Host \"Document modifies :\"
echo \"Path : \",$doc.Name
echo \"Remplacement de : \",$findText
echo \"Avec : \",$replaceWith
}
} #end foreach word
$document.save()
$document.close()
} #end foreach doc
$application.quit()
$application = $null
[gc]::collect()
[gc]::WaitForPendingFinalizers()
[/code:1]

Mais j'aimerais dans un premier juste lister tout les chemin UNC contenu dans mes fichiers Word. Cette selection doit s'operer en modifiant la variable $findText avec un expression reguliere detectant les path UNC et en manipulant cette object .COM :
$selection.find.execute($findText,$matchCase,$matchWholeWord,$matchWIldCards,$matchSoundsLike, $matchAllWordForms,$forward,$wrap,$format,$replaceWith,$replace)

Pourriez-vous me dire quels options je dois mettre à cette oject pour qu'il me retourne toute les instances qui corresponde à des UNCs

Merci d'avance de m'avoir lu

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 1 mois #8829 par Arnaud Petitjean
Bonsoir Selenae,

Comme je n'aime pas voir des messages restés sans réponse (ça n'arrive pas souvent;) ) je te réponds...

As tu résolu ton problème ? Effectivement ta problèmatique est très intéressante car elle concerne toutes les entreprises lors d'une migration de serveurs de fichiers.

Il me semble qu'il existe un outil développé par MS pour résoudre ton problème ?

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 1 mois #8831 par Arnaud Petitjean
Si c'est un problème d'expression régulière il faut doubler les antislashs car l'antislash permet de désactiver un caractère.

Exemple :

[code:1]
PS > \"\\toto\" -match \"^\\\"
True

PS > $Matches

Name Value
----
0 \\
[/code:1]

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.068 secondes
Propulsé par Kunena