Question Retrouver des UNC dans un document Word
- Selenae
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 14 ans 2 semaines #8478
par Selenae
Retrouver des UNC dans un document Word a été créé 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
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.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 13 ans 11 mois #8829
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Retrouver des UNC dans un document Word
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
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.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 13 ans 11 mois #8831
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Retrouver des UNC dans un document Word
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
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.111 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- Retrouver des UNC dans un document Word