powershell Afficher la liste des dossiers outlook ou trouver le chemin d'accèsd'nun dos
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了powershell Afficher la liste des dossiers outlook ou trouver le chemin d'accèsd'nun dos相关的知识,希望对你有一定的参考价值。
# SMAC - LM - 05/05/2015
<#
.Synopsis
Recherche des dossiers dans outlook
Si un nom de dossier est passé en paramètre le script affichera son chemin d'accès,
Si aucun nom n'est fourni, le script liste tous les dossiers outlook
.Description
Utilisation de l'objet COM outlook afin de parcourir les dossiers.
.Parameter dossier
contient le nom (ou une partie du nom) du dossier à chercher. Si ce paramètre n'est pas renseigné l'arborescence complète sera affichée.
.Notes
Changelog :
#>
[CmdletBinding()] #make script react as cmdlet (-verbose etc..)
param(
[Parameter(Position=0, Mandatory=$false,ValueFromPipeline = $true)]
[System.String]
$dossier=$null
)
$output=""
$find=@() #tableau pour le résultat de la recherche
function Get-MailboxFolder($folder,$prefix, $search=$null, $firstrun=$false){
if(($search -ne $null) -and ($folder.name -match $search)) {
$script:find+=$folder.folderpath # si le nom du dossier contient le terme recherché on l'ajoute au tableau des résultats
}
if($firstrun -eq $true){$script:output=$script:output+"$prefix$($_.name)`n"} # affichage du nom des dossiers de 1er niveau
if ($folder.folders.count -gt 0 ){ # si le dossier contient des sous-dossiers
if($firstrun -eq $false){
$script:output=$script:output+"$prefix$($folder.name)`n"
}
$prefix=" "+$prefix # modification du préfixe
$folder.folders |sort -property name| %{ get-MailboxFolder $_ $prefix $search} #appel récursif de la fonction
}
# pas de sous dossier
if($folder.folders.count -eq 0 -and $firstrun -eq $false){$script:output=$script:output+"$prefix$($folder.name)`n"}
}
# ouverture outlook
$o=New-Object -ComObject outlook.application
$ns=$o.GetNamespace("MAPI")
$bal=$ns.Folders.Item(1) #compte de messagerie par défaut
$prefix="└"
$i=1
$bal.folders|sort -property name |%{
$percent=$i*100/($bal.folders.count)
write-progress -activity "Recherche en cours merci de patienter" -currentoperation "$($_.name)" -percentcomplete $percent
get-MailboxFolder $_ $prefix $dossier $true
$i++
}
if(($dossier -ne $null) -and ($dossier -ne "")){ # Fait on une recherche ?
if ($find.count -eq 0){write-host "Aucun dossier *$dossier* n'a pas été trouvé"}
else{write-host "Le terme *$dossier* a été trouvé dans : ";$find}
}
else{$script:output} # afficher l'arborescence
以上是关于powershell Afficher la liste des dossiers outlook ou trouver le chemin d'accèsd'nun dos的主要内容,如果未能解决你的问题,请参考以下文章