Hier ist ein Powershell-Skript, das ich geschrieben habe. Es ermöglicht das Durchsuchen eines Ordnernamens oder das Auflisten des vollständigen Ordnerbaums. Verwendungszweck :
Ohne Parameter werden alle Ordner angezeigt
PS>.\get-MailboxFolders.ps1 └@conserver └_Licences, codes etc. └2 Clic └Axter Ltd └Chili └Pérou
Wenn Sie einen Parameter übergeben, wird nach dem Ordnernamen gesucht, der diesen Begriff enthält, und der Pfad wird ausgegeben
PS>.\get-MailboxFolders.ps1 201 The term *201* was found in : \\mailbox@domain.com\2015 \\mailbox@domain.com\archivage\2010 \\mailbox@domain.com\archivage\2011
Sie können ein bestimmtes Konto mithilfe des Postfachparameters suchen
PS>.\get-MailboxFolders.ps1 -mailbox "infor" Account selected = ENT, Service Informatique └Archives └Boîte de réception
Hier ist das Skript:
<# .Synopsis search outlook folders or display the folders tree .Description This script uses the outlook COM object. .Parameter folder Part of the folder's name to search for. If this parameter is not set the script will output the complete folders tree #> [CmdletBinding()] param( [Parameter(Position=0, Mandatory=$false,ValueFromPipeline = $true)] [System.String] $folder=$null, [Parameter(Position=1, Mandatory=$false)] [System.String] $mailbox=$null ) $output="" $find=@() function Get-MailboxFolder($folder,$prefix, $search=$null, $firstrun=$false){ if(($search -ne $null) -and ($folder.name -match $search)) { $script:find+=$folder.folderpath # if foldername match search term add it to the result } if($firstrun -eq $true){$script:output=$script:output+"$prefix$($_.name)`n"} # top level directories if ($folder.folders.count -gt 0 ){ # If there are subfolders if($firstrun -eq $false){ $script:output=$script:output+"$prefix$($folder.name)`n" } $prefix=" "+$prefix # preffix padding $folder.folders |sort -property name| %{ get-MailboxFolder $_ $prefix $search} #recursivity } # No subfolder if($folder.folders.count -eq 0 -and $firstrun -eq $false){$script:output=$script:output+"$prefix$($folder.name)`n"} } # Start outlook $o=New-Object -ComObject outlook.application $ns=$o.GetNamespace("MAPI") if($mailbox -ne $null){ $bal=$ns.Folders |?{$_.name -match $mailbox} } else{ $bal=$ns.Folders.Item(1) # select the default mail account // you can let $bal=$ns.Folders to search through all accounts } write-host "Account selected = $($bal.name)" $prefix="└" $i=1 $bal.folders|sort -property name |%{ $percent=$i*100/($bal.folders.count) write-progress -activity "Searching, please wait" -currentoperation "$($_.name)" -percentcomplete $percent get-MailboxFolder $_ $prefix $folder $true $i++ } if(($folder -ne $null) -and ($folder -ne "")){ # are we searching ? if ($find.count -eq 0) else } else{$script:output} # display tree $o.quit()