[Windows + Exchange 2003] Export mailbox size

Pagina: 1
Acties:

  • DeeJee
  • Registratie: Maart 2000
  • Laatst online: 23-12-2024
Binnen het AD van een klant hebben we een OU met daarin een paar duizend gebruikers.
Er zijn meerder OU's met duizende gebruikers.

Nu willen we weten wat de mailbox size is van de gebruikers in deze OU.
Heeft iemand een idee (script) die deze gegevens kan exporteren?

Het probleem is dat we dit niet van alle gebruikers willen exporteren, maar alleen van deze ene OU. De mailboxen van deze gebruikers zijn over meerdere back-end servers verdeeld.

Er zijn wel scripts die de mailbox size exporteren, maar dan krijgen we alles en kunnen we niet de gebruikers uit die ene OU filteren.

Money for nothin' and your chicks for free


  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 17:10

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

Als je in staat bent om Powershell te gebruiken, dan kun je met het get-mailbox cmdlet gericht een specifieke OU targetten.

De totale regel wordt dan iets als:
get-mailbox -organizationalunit users | get-mailboxstatistics | select-object DisplayName,TotalItemSize,StorageLimitStatus

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


  • sanfranjake
  • Registratie: April 2003
  • Niet online

sanfranjake

Computers can do that?

(overleden)
En anders zou ik een scriptje maken wat uit de AD je mailboxen uit die specifieke OU (bijvoorbeeld CSVDE, LDIFDE) ophalen, en dat vervolgens als input gebruiken voor een script wat van die users dan weer de mailboxsize ophaalt.
Had je zelf al wat geprobeerd? Daar lijkt het namelijk niet op :(

Mijn spoorwegfotografie
Somda - Voor en door treinenspotters


  • DeeJee
  • Registratie: Maart 2000
  • Laatst online: 23-12-2024
Question Mark schreef op woensdag 17 december 2008 @ 14:42:
Als je in staat bent om Powershell te gebruiken, dan kun je met het get-mailbox cmdlet gericht een specifieke OU targetten.

De totale regel wordt dan iets als:

[...]
Helaas zitten we met Exchange 2003. Is Powershell dan ook mogelijk? Ik dacht het namelijk niet.
Get-Mailbox
Applies to: Exchange Server 2007 SP1
sanfranjake schreef op woensdag 17 december 2008 @ 14:45:
En anders zou ik een scriptje maken wat uit de AD je mailboxen uit die specifieke OU (bijvoorbeeld CSVDE, LDIFDE) ophalen, en dat vervolgens als input gebruiken voor een script wat van die users dan weer de mailboxsize ophaalt.
Ook daar hebben wij aan gedacht. Helaas is de output wat lastiger.
Vooral omdat we het hier over meer dan tien backend servers hebben. Vandaar mijn vraag (nee ik heb ze nog niet gevonden) of er scripts zijn die dit doen voor meerdere servers.

De scripts m.b.t. mailbox size doen dit per server.

Het lijkt er op dat er dus zelf een script moet worden gebouwd.
Had je zelf al wat geprobeerd? Daar lijkt het namelijk niet op :(
Wel dus.

[ Voor 6% gewijzigd door DeeJee op 18-12-2008 11:03 ]

Money for nothin' and your chicks for free


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Onterecht was die vraag niet, want je was er niet erg mededeelzaam over.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • DeeJee
  • Registratie: Maart 2000
  • Laatst online: 23-12-2024
alt-92 schreef op donderdag 18 december 2008 @ 11:29:
[...]

Onterecht was die vraag niet, want je was er niet erg mededeelzaam over.
Eens...

Money for nothin' and your chicks for free


  • pennenlikker
  • Registratie: Oktober 2007
  • Laatst online: 20-01 15:13
Bij het scriptcenter van MS kun je echt enorm veel info vinden over het scripten AD exchange enz.. misschien kun je daar je oplossing vinden.

Tact is the ability to tell someone to go to hell in such a way that they look forward to the trip


  • Qwerty-273
  • Registratie: Oktober 2001
  • Laatst online: 20:46

Qwerty-273

Meukposter

***** ***

DeeJee schreef op donderdag 18 december 2008 @ 11:01:
Ook daar hebben wij aan gedacht. Helaas is de output wat lastiger.
Vooral omdat we het hier over meer dan tien backend servers hebben. Vandaar mijn vraag (nee ik heb ze nog niet gevonden) of er scripts zijn die dit doen voor meerdere servers.
Dus gewoon een script schrijven die alle gebruikers uit die OU binnen haalt, en per gebruiker op basis van het msExchHomeServerName attribuut de grote van de mailbox binnenhaalt? De output gewoon naar een csv bestand of je eigen voorkeur? En al dan niet batched te doen?

Erzsébet Bathory | Strajk Kobiet | You can lose hope in leaders, but never lose hope in the future.


  • DeeJee
  • Registratie: Maart 2000
  • Laatst online: 23-12-2024
pennenlikker schreef op donderdag 18 december 2008 @ 11:58:
Bij het scriptcenter van MS kun je echt enorm veel info vinden over het scripten AD exchange enz.. misschien kun je daar je oplossing vinden.
Thanks ik ga hier eens zoeken.
Qwerty-273 schreef op donderdag 18 december 2008 @ 12:06:
[...]

Dus gewoon een script schrijven die alle gebruikers uit die OU binnen haalt, en per gebruiker op basis van het msExchHomeServerName attribuut de grote van de mailbox binnenhaalt? De output gewoon naar een csv bestand of je eigen voorkeur? En al dan niet batched te doen?
Dit ga ik onthouden. Bedankt voor het duwen in de goede richting.

Money for nothin' and your chicks for free


  • Laagje
  • Registratie: Juli 2002
  • Laatst online: 02-08-2022
Ik heb ooit in C# .NET een app geschreven die de totale size van disabled users op telt.

Misschien heb je er wat aan.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
using System.Security;
using System.DirectoryServices.ActiveDirectory;


namespace Get_DisabledUserMailboxSize
{


class Program
{
static void Main(string[] args)
{
int _totalSize = 0;

System.Console.WriteLine("Specify domain and credentials with exchange privileges:");

System.Console.Write("Domain: ");
string domain = System.Console.ReadLine();

System.Console.Write("Username: ");
string user = System.Console.ReadLine();

System.Console.Write("Password: ");

string password = Returnpassword();

System.Console.WriteLine("\n");

SearchResultCollection resultCollection = GetDisabledUsersWithMailbox(domain);


System.Console.WriteLine("Found " + resultCollection.Count + " disabled users with mailbox.. Enumerating total mailbox size..");
System.Console.WriteLine("Please wait.. This could take a while");

foreach (SearchResult resultaat in resultCollection)
{

DirectoryEntry dirEntry = resultaat.GetDirectoryEntry();

string exchHomeServer = dirEntry.Properties["msExchHomeServerName"].Value.ToString();

string[] homeServer = exchHomeServer.Split('=');


//System.Console.WriteLine(dirEntry.Properties["displayName"].Value.ToString());

System.Management.ConnectionOptions objconn = new System.Management.ConnectionOptions();
objconn.Username = user;
objconn.Password = password;
objconn.Impersonation = System.Management.ImpersonationLevel.Impersonate;
objconn.EnablePrivileges = true;
string cServername = homeServer[homeServer.Count() - 1];
System.Management.ManagementScope exmangescope = new System.Management.ManagementScope(@"\\" + cServername + @"\root\MicrosoftExchangeV2", objconn);
System.Management.ObjectQuery objquery = new System.Management.ObjectQuery("SELECT * FROM Exchange_Mailbox Where MailboxDisplayName ='"+dirEntry.Properties["displayName"].Value.ToString()+"'");
System.Management.ManagementObjectSearcher objsearch = new System.Management.ManagementObjectSearcher(exmangescope, objquery);


try
{

System.Management.ManagementObjectCollection queryCollection1 = objsearch.Get();
string strDisplay;
foreach (System.Management.ManagementObject instmailbox in queryCollection1)
{
strDisplay = instmailbox["MailboxDisplayName"].ToString() + " " + instmailbox["size"].ToString();
string tmpSize = instmailbox["size"].ToString();
_totalSize = _totalSize + Int32.Parse(tmpSize);

}
}
catch (Exception e)
{
System.Console.WriteLine(cServername + " is not available or credentials are invalid.. Skipping " + dirEntry.Properties["displayName"].Value.ToString());
}


}

_totalSize = (_totalSize / 1024);
System.Console.WriteLine("Total mailbox size of disabled users in MB: " + _totalSize.ToString());

ConsoleKeyInfo key = Console.ReadKey(true);
while (key.Key != ConsoleKey.Enter)
{
key = Console.ReadKey(true);
}


}


public static SearchResultCollection GetDisabledUsersWithMailbox(string _connectDomain)
{

string connectionPrefix = "LDAP://" + _connectDomain;

DirectoryEntry dirEntry = new DirectoryEntry(connectionPrefix);
DirectorySearcher dirSearcher = new DirectorySearcher(dirEntry);

dirSearcher.Filter = "(&(UserAccountControl:1.2.840.113556.1.4.803:=2)(msExchHomeServerName=*)(objectClass=User))";

SearchResultCollection result = dirSearcher.FindAll();


dirEntry.Close();
dirEntry.Dispose();
dirSearcher.Dispose();

return result;

}

public static string Returnpassword()
{
string password = "";
ConsoleKeyInfo info = Console.ReadKey(true);
while (info.Key != ConsoleKey.Enter)
{
if (info.Key != ConsoleKey.Backspace)
{
password += info.KeyChar;
info = Console.ReadKey(true);
}
else if (info.Key == ConsoleKey.Backspace)
{
if (!string.IsNullOrEmpty(password))
{
password = password.Substring
(0, password.Length - 1);
}
info = Console.ReadKey(true);
}
}
for (int i = 0; i < password.Length; i++)
Console.Write("*");
return password;
}

}
}

  • DeeJee
  • Registratie: Maart 2000
  • Laatst online: 23-12-2024
Laagje schreef op donderdag 18 december 2008 @ 15:05:
Ik heb ooit in C# .NET een app geschreven die de totale size van disabled users op telt.

Misschien heb je er wat aan.

[...]
Bedankt, ik ga er naar kijken!!!

Money for nothin' and your chicks for free

Pagina: 1