Question Public Folder - Exchange 2003

Plus d'informations
il y a 16 ans 9 mois #4827 par Laurent Dardenne
clem écrit:

Laurent Dardenne écrit:

Salut,
avant de te répondre connais-tu la notion de classe d'association sous WMI ?

Non pas du tout

Une classe d’association définit les relations entre deux classes, par exemple entre un disque et une partition. Pour cet exemple une classe d'association se situe entre un disque et une partition, ainsi on peut retrouver le disque d'une partition ou les partitions d'un disque.
[code:1]
$d=gwmi Win32_DiskDrive|select -first 1
$d.psbase.GetRelationships()
[/code:1]

Je pensais que cette classe en utilisait, en supposant que le nom Folder référençait une notion de conteneur, et qu'on y retrouve la liste des contacts qu'il héberge.
A priori cela n'est pas le cas.

Comme je ne connais pas ces objets je ne peux aller plus loin, mais dans ce genre de cas je creuse la doc :

technet.microsoft.com/en-us/scriptcenter/dd742246.aspx
technet.microsoft.com/en-us/exchange/bb331586.aspx#pf

Il se peut aussi que WMI ne fournisse pas ces informations. Le sdk Exchange peut peut-être proposer d'autres pistes: Exchange OLE DB Provider
msdn.microsoft.com/en-us/library/aa486272(EXCHG.65).aspx
Ou un objet COM.

Voir aussi :
www.serveur-2003.com/index.php?option=co...p;id=8&Itemid=43
technet.microsoft.com/en-us/magazine/2005.05.blogtales.aspx


Enfin vérifie si la classe Exchange_Mailbox ne peut pas t'aider pour ce traitement :

The MailboxGUID property indicates the globally unique identifier (GUID) that links the mailbox to a user in Active Directory.


Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 9 mois #4846 par clem
Réponse de clem sur le sujet Re:Public Folder - Exchange 2003
Merci de ton aide,

J'ai donc opté pour l'objet Com qui répond parfaitement à mon besoin

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

Plus d'informations
il y a 16 ans 9 mois #4849 par Arnaud Petitjean
Salut Clem,

Si tu avais néanmoins quelques scripts relatifs à Exchange ça pourrait étoffer un peu notre bibliothèque de scripts ;).

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 16 ans 8 mois #4865 par clem
Réponse de clem sur le sujet Re:Public Folder - Exchange 2003
je me suis basé sur cet exemple de code qui liste les éléments d'un calendrier \"testcal\" dans un dossier public :

[code:1]$ol = new-object -com outlook.application
$ns = $ol.getNamespace(\"MAPI\"«»)
$pf = $ns.Session.GetDefaultFolder(18)
$pf.folders.Item(\"testCal\"«»).items | ft Subject,Start,End -a [/code:1]

Cet exemple est issu du forum :

www.powershellcommunity.org/Forums/tabid...v/topic/Default.aspx

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

Plus d'informations
il y a 16 ans 8 mois #4866 par clem
Réponse de clem sur le sujet Re:Public Folder - Exchange 2003
J'en profite pour vous laisser un script qui génère une Windows Form, qui recupère l'object wmi Exchange_Mailbox, affiche la taille des mailboxes et permet ensuite de filtrer la liste obtenue sur le champ MailboxDisplayName


[code:1]function FillGrid
{
#vide le datagrid
$dataGrid_liste.DataSource = $null

$myDataSet = New-Object system.data.DataSet(\"myDataSet\"«»)

#Création de la DataTable \"Clients\"
$tClients = New-Object system.data.DataTable(\"Clients\"«»)

#Création des colonnes, et ajout de ces colonnes à la table.
$tClients.Columns.Add((new-object system.data.DataColumn(\"User\"«»)))
$tClients.Columns.Add((new-object system.data.DataColumn(\"Mailbox Size (Mo)\"«»)))
$tClients.Columns.Add((new-object system.data.DataColumn(\"Total Items\"«»)))
$tClients.Columns.Add((new-object system.data.DataColumn(\"Store Name\"«»)))

#on n'affiche pas les comptes SystemMailBox et on filtre les comptes selon le texte du controle $textBox_search
$liste | Where { $_.MailboxDisplayName -notmatch \"SystemMailBox\" } `
| Where { $_.MailboxDisplayName -notmatch \"SMTP\" } `
| Where { $_.MailboxDisplayName -match $textBox_search.text } `
| foreach {
$size=$_.Size
$size=[Math]::round($size/1KB,2)
$tClients.Rows.Add($_.MailboxDisplayName,$size,$_.TotalItems,$_.StoreName)
}

#Ajout de la Table \"Clients\" au DataSet
$myDataSet.Tables.Add($tClients)
#Ajout du DataSet au DataGrid pour affichage
$dataGrid_liste.DataSource = $myDataSet.Tables[\"Clients\"]

}


#Generated Form Function
function GenerateForm {
########################################################################
# Code Generated By: SAPIEN Technologies PrimalForms v1.0.1.0
# Generated On: 10/02/09 2:40
# Generated By: clem
########################################################################

#region Import the Assembles
[reflection.assembly]::loadwithpartialname(\"System.Windows.Forms\"«») | Out-Null
[reflection.assembly]::loadwithpartialname(\"System.Drawing\"«») | Out-Null
#endregion

#region Generated Form Objects
$form1 = New-Object System.Windows.Forms.Form
$button_search = New-Object System.Windows.Forms.Button
$textBox_search = New-Object System.Windows.Forms.TextBox
$dataGrid_liste = New-Object System.Windows.Forms.DataGrid
#endregion Generated Form Objects

#
#Generated Event Script Blocks
#
#Provide Custom Code for events specified in PrimalForms.
$handler_form1_Load=
{
cls
$servername=\"NOM_DU_SERVEUR_EXCHANGE\"
#requete wmi
[Object[]]$script:liste=gwmi Exchange_Mailbox -Namespace ROOT\MicrosoftExchangev2 -computer $servername `
| select-object MailboxDisplayName,TotalItems,Size,StoreName
#remplissage du controle datagrid_liste
FillGrid
}

$button_search_OnClick=
{
#remplissage du controle datagrid_liste
FillGrid
}

#
#region Generated Form Code
$form1.Text = 'MailBox Size'
$form1.MaximizeBox = $False
$form1.Name = 'form1'
$form1.SizeGripStyle = 2
$form1.AutoScaleMode = 3
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 651
$System_Drawing_Size.Height = 668
$form1.ClientSize = $System_Drawing_Size
$form1.FormBorderStyle = 2
$form1.add_Load($handler_form1_Load)

$button_search.TabIndex = 1
$button_search.Name = 'button_search'
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 145
$System_Drawing_Size.Height = 20
$button_search.Size = $System_Drawing_Size
$button_search.UseVisualStyleBackColor = $True

$button_search.Text = 'Search'

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 251
$System_Drawing_Point.Y = 33
$button_search.Location = $System_Drawing_Point
$button_search.DataBindings.DefaultDataSourceUpdateMode = 0
$button_search.add_Click($button_search_OnClick)

$form1.Controls.Add($button_search)

$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 204
$System_Drawing_Size.Height = 20
$textBox_search.Size = $System_Drawing_Size
$textBox_search.DataBindings.DefaultDataSourceUpdateMode = 0
$textBox_search.Name = 'textBox_search'
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 17
$System_Drawing_Point.Y = 33
$textBox_search.Location = $System_Drawing_Point
$textBox_search.TabIndex = 0
$textBox_search.add_TextChanged($handler_textBox1_TextChanged)

$form1.Controls.Add($textBox_search)

$dataGrid_liste.AlternatingBackColor = [System.Drawing.Color]::FromArgb(255,166,202,240)
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 622
$System_Drawing_Size.Height = 585
$dataGrid_liste.Size = $System_Drawing_Size
$dataGrid_liste.DataBindings.DefaultDataSourceUpdateMode = 0
$dataGrid_liste.RowHeadersVisible = $False
$dataGrid_liste.HeaderForeColor = [System.Drawing.Color]::FromArgb(255,0,0,0)
$dataGrid_liste.Name = 'dataGrid_liste'
$dataGrid_liste.TabStop = $False
$dataGrid_liste.ReadOnly = $True
$dataGrid_liste.DataMember = ''
$dataGrid_liste.PreferredColumnWidth = 150
$dataGrid_liste.TabIndex = 2
$dataGrid_liste.BackColor = [System.Drawing.Color]::FromArgb(255,212,208,200)
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 17
$System_Drawing_Point.Y = 69
$dataGrid_liste.Location = $System_Drawing_Point
$dataGrid_liste.CaptionVisible = $False

$form1.Controls.Add($dataGrid_liste)

#endregion Generated Form Code

#Show the Form
$form1.ShowDialog()| Out-Null

} #End Function

#Call the Function
GenerateForm
[/code:1]<br><br>Message édité par: clem, à: 24/06/09 11:09

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

Plus d'informations
il y a 16 ans 8 mois #4876 par Arnaud Petitjean
Merci Clem ! ;-)

Je les mettrais dans notre bibliothèque.

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.105 secondes
Propulsé par Kunena