none
Dimesione Casella - Powershell RRS feed

  • Domanda

  • Ciao a tutti,
    non sono un grande esperto di powershell ma avrei bisogno un aiuto per sistemare questo comando: 

    Get-Mailbox -Database “dominioesempio.it” | Get-MailboxStatistics | Sort TotalItemSize -descending | Ft Displayname,TotalItemSize,ItemCount,TotalDeletedItemSize,LastLogonTime

    DisplayName         TotalItemSize                         ItemCount       TotalDeletedItemSize         LastLogonTime
    -----------             -------------                         ---------            --------------------               -------------
    utente1                 18.93 GB (20,323,365...           72052           317.6 MB (333,057,99...    21/12/2018 09:33:04
    utente2                 14.17 GB (15,217,135...           76950           1002 MB (1,050,197,6...    21/12/2018 09:35:30
    utente3                 13.57 GB (14,575,595...           84423           157.2 MB (164,788,87...    21/12/2018 09:35:28

    Avrei bisogno di avere come dato anche lo spazio allocato per la casella e non l'utilizzato.
    Es.utente 1 consuma 18.93 GB ma ha una casella da 26 GB ma non estrae questo dato con il comando che invio.

    Potete darmi un consiglio?

    Grazie come sempre
    Angelo

    venerdì 21 dicembre 2018 08:40

Risposte

  • Ciao ti copio incollo uno script che avevo adattato alle mie esigenze  ho aggiunto  "spazioRimanente"

    $AllMailboxes = @()
    $Mailboxes = Get-Mailbox -ResultSize Unlimited | Select DisplayName, Database, IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, Alias, LastLoggedOnUserAccount, TotalDeletedItemSize,LastLogonTime
    foreach ($Mailbox in $Mailboxes){
        $MailboxStats = "" |Select  Nome,Database,IssueWarningQuota,ProhibitSendQuota,ProhibitSendReceiveQuota,DimensioneTotale,ElementiCancellati,NumeroMail,StorageLimitStatus,Account,LastLogonTime,SpazioRimanente
        $Stats = Get-MailboxStatistics -Identity $Mailbox.Alias
        $MailboxStats.Nome = $Mailbox.DisplayName
    	$MailboxStats.Account = $Stats.LastLoggedOnUserAccount
        $MailboxStats.Database = $Mailbox.Database
        $MailboxStats.IssueWarningQuota = $Mailbox.IssueWarningQuota
        $MailboxStats.ProhibitSendQuota = $Mailbox.ProhibitSendQuota
        $MailboxStats.ProhibitSendReceiveQuota = $Mailbox.ProhibitSendReceiveQuota
    	$MailboxStats.ElementiCancellati = $Stats.TotalDeletedItemSize
        $MailboxStats.DimensioneTotale = $Stats.TotalItemSize
        $MailboxStats.NumeroMail = $Stats.ItemCount
        $MailboxStats.StorageLimitStatus = $Stats.StorageLimitStatus
    	$MailboxStats.LastLogonTime = $Stats.LastLogonTime
    	try {$MailboxStats.SpazioRimanente = ($Mailbox.ProhibitSendReceiveQuota - $Stats.TotalItemSize)} Catch { "Error on $($MailboxStats.Nome)"}
        $AllMailboxes += $MailboxStats
    }
    #creo csv $AllMailboxes | Export-Csv C:\mailboxInfo.csv -NoTypeInformation -delimiter ';'

    Ciao Gastone


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere


    venerdì 21 dicembre 2018 11:53
    Moderatore
  • Ciao Gastone,
    grazie per la pazienza e l'aiuto.

    I due comandi che mi hai girato funzionano, ma diciamo che lo scopo era quello di generare un report del consumo reale delle caselle per dominio (ogni dominio su exchange è poi collegato ad un Database) da girare all'amministrazione.

    Con lo script che mi hai mandato direi che ci siamo ma ho solo il problema dei nomi non univoci, non c'è modo di superare quello scoglio?

    Grazie e ciao

    Lo scoglio sarebbe superabile se fossi li a fare un minimo di debug...

    l'errore è alla riga 6 questa?

       $MailboxStats.Nome = $Mailbox.DisplayName

    oppure prova questo, non è molto bello stilisticamente.. siamo in ferie ... per di più gratis :)

    $AllMailboxes = @()
    $Mailboxes = Get-Mailbox -ResultSize Unlimited | Select DisplayName, Database, IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, Alias, LastLoggedOnUserAccount, TotalDeletedItemSize,LastLogonTime
    ($Mailboxes| % {
        $Stats = Get-MailboxStatistics -Identity $_.Alias
    	$diff=''
    	try {$diff=($_.ProhibitSendReceiveQuota - $Stats.TotalItemSize)} Catch { "Error on $($MailboxStats.Nome)"}
    	"$($_.DisplayName);$($Stats.LastLoggedOnUserAccount);$($_.Database);$($_.IssueWarningQuota);$($_.ProhibitSendQuota);$($_.ProhibitSendReceiveQuota);$($Stats.TotalDeletedItemSize);$($Stats.TotalItemSize);$($Stats.ItemCount);$($Stats.StorageLimitStatus);$($Stats.LastLogonTime);$diff($diff)"
    })>>c:\temp\mbox.csv

    Ciao Gastone


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere

    venerdì 28 dicembre 2018 17:01
    Moderatore

Tutte le risposte

  • Ciao ti copio incollo uno script che avevo adattato alle mie esigenze  ho aggiunto  "spazioRimanente"

    $AllMailboxes = @()
    $Mailboxes = Get-Mailbox -ResultSize Unlimited | Select DisplayName, Database, IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, Alias, LastLoggedOnUserAccount, TotalDeletedItemSize,LastLogonTime
    foreach ($Mailbox in $Mailboxes){
        $MailboxStats = "" |Select  Nome,Database,IssueWarningQuota,ProhibitSendQuota,ProhibitSendReceiveQuota,DimensioneTotale,ElementiCancellati,NumeroMail,StorageLimitStatus,Account,LastLogonTime,SpazioRimanente
        $Stats = Get-MailboxStatistics -Identity $Mailbox.Alias
        $MailboxStats.Nome = $Mailbox.DisplayName
    	$MailboxStats.Account = $Stats.LastLoggedOnUserAccount
        $MailboxStats.Database = $Mailbox.Database
        $MailboxStats.IssueWarningQuota = $Mailbox.IssueWarningQuota
        $MailboxStats.ProhibitSendQuota = $Mailbox.ProhibitSendQuota
        $MailboxStats.ProhibitSendReceiveQuota = $Mailbox.ProhibitSendReceiveQuota
    	$MailboxStats.ElementiCancellati = $Stats.TotalDeletedItemSize
        $MailboxStats.DimensioneTotale = $Stats.TotalItemSize
        $MailboxStats.NumeroMail = $Stats.ItemCount
        $MailboxStats.StorageLimitStatus = $Stats.StorageLimitStatus
    	$MailboxStats.LastLogonTime = $Stats.LastLogonTime
    	try {$MailboxStats.SpazioRimanente = ($Mailbox.ProhibitSendReceiveQuota - $Stats.TotalItemSize)} Catch { "Error on $($MailboxStats.Nome)"}
        $AllMailboxes += $MailboxStats
    }
    #creo csv $AllMailboxes | Export-Csv C:\mailboxInfo.csv -NoTypeInformation -delimiter ';'

    Ciao Gastone


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere


    venerdì 21 dicembre 2018 11:53
    Moderatore
  • Ciao e grazie per la risposta,
    siccome su quell'exchange ci sono diversi DB a seconda dei clienti, se dovessi esportare solo per il DB "cliente1" come devo modificare lo script?

    Ciao

    Angelo

    giovedì 27 dicembre 2018 08:28
  • dovrebbe bastare aggiungere in coda  | ? {$_.alias -eq 'nome cliente1'}

    $Mailboxes = Get-Mailbox -ResultSize Unlimited | Select DisplayName, Database, IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, Alias, LastLoggedOnUserAccount, TotalDeletedItemSize,LastLogonTime | Where {$_.alias -eq 'nome cliente1'}

    Un consiglio, utilizza il file CSV generato dallo script precedente, se sai usare Excel + filtri ti risulterà molto più facile selezionare utente e/o database e/o nome e/o ... etc.

    Ciao Gastone


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere


    giovedì 27 dicembre 2018 18:30
    Moderatore
  • Ciao,
    utilizzando come mi suggerisci non mi funziona ma se lo imposto così sembra andare:

    $AllMailboxes = @()
    $Mailboxes = Get-Mailbox -Database "CUSTOMER-DB1" -ResultSize Unlimited | Select DisplayName, Database, IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, Alias, LastLoggedOnUserAccount, TotalDeletedItemSize,LastLogonTime
    foreach ($Mailbox in $Mailboxes){

    Il problema è che se in altri DB ci sono caselle simili come per esempio info@cliente1.com e info@cliente2.com lo script mi restituisce questo errore:

    Get-MailboxStatistics : The specified mailbox "direzione"  isn't unique.
    At C:\Users\Administrator.DOMINIO\Desktop\Script\2.ps1:6 char:14
    +     $Stats = Get-MailboxStatistics -Identity $Mailbox.Alias
    +              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Get-MailboxStatistics], ManagementObjectAmbiguousException
        + FullyQualifiedErrorId : [Server=SRVEXCHANGE,RequestId=3160de38-7d79-43f7-aa5e-fd4573271669,TimeStamp=28/12/2018 08:17:44] [FailureCategory=Cmdlet-ManagementObjectAmbiguousException] 
        9838A373,Microsoft.Exchange.Management.MapiTasks.GetMailboxStatistics

    e nel csv non mi esporta le statistiche della casella "simile"

    Il problema potrebbe essere questo: 

    $AllMailboxes = @()
    a cosa serve questa stringa a cercare in tutte caselle?

    venerdì 28 dicembre 2018 07:51
  • L'errore è dovuto a nomi non unici trovati e powershell non riesce a risolvere questa ambiguità(bisognerebbe cambiare il codice opportunamente, una banalità conoscendo la tua organizzazione).

    $AllMailboxes = @()

    è una istruzione (corretta) che assegna a $AllMailboxes un array vuoto, dopodichè, powershell tratterà come tale la variabile che verrà riempita con i valori selezionati di tutte le caselle.

    Ripartamo  con qualcosa di più facile: ecco due righe che ti danno tutte le informazioni su una mailbox in particolare quella di info@cliente1.com

    Get-Mailbox            info@cliente1.com |select * >  tutteLeInfo_su_info@cliente1.com.txt
    Get-MailboxStatistics  info@cliente1.com |select * >> tutteLeInfo_su_info@cliente1.com.txt

    Provala singolarmente con le caselle problematiche

    Ciao Gastone



    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere





    venerdì 28 dicembre 2018 14:52
    Moderatore
  • Ciao Gastone,
    grazie per la pazienza e l'aiuto.

    I due comandi che mi hai girato funzionano, ma diciamo che lo scopo era quello di generare un report del consumo reale delle caselle per dominio (ogni dominio su exchange è poi collegato ad un Database) da girare all'amministrazione.

    Con lo script che mi hai mandato direi che ci siamo ma ho solo il problema dei nomi non univoci, non c'è modo di superare quello scoglio?

    Grazie e ciao

    venerdì 28 dicembre 2018 15:49
  • Ciao Gastone,
    grazie per la pazienza e l'aiuto.

    I due comandi che mi hai girato funzionano, ma diciamo che lo scopo era quello di generare un report del consumo reale delle caselle per dominio (ogni dominio su exchange è poi collegato ad un Database) da girare all'amministrazione.

    Con lo script che mi hai mandato direi che ci siamo ma ho solo il problema dei nomi non univoci, non c'è modo di superare quello scoglio?

    Grazie e ciao

    Lo scoglio sarebbe superabile se fossi li a fare un minimo di debug...

    l'errore è alla riga 6 questa?

       $MailboxStats.Nome = $Mailbox.DisplayName

    oppure prova questo, non è molto bello stilisticamente.. siamo in ferie ... per di più gratis :)

    $AllMailboxes = @()
    $Mailboxes = Get-Mailbox -ResultSize Unlimited | Select DisplayName, Database, IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, Alias, LastLoggedOnUserAccount, TotalDeletedItemSize,LastLogonTime
    ($Mailboxes| % {
        $Stats = Get-MailboxStatistics -Identity $_.Alias
    	$diff=''
    	try {$diff=($_.ProhibitSendReceiveQuota - $Stats.TotalItemSize)} Catch { "Error on $($MailboxStats.Nome)"}
    	"$($_.DisplayName);$($Stats.LastLoggedOnUserAccount);$($_.Database);$($_.IssueWarningQuota);$($_.ProhibitSendQuota);$($_.ProhibitSendReceiveQuota);$($Stats.TotalDeletedItemSize);$($Stats.TotalItemSize);$($Stats.ItemCount);$($Stats.StorageLimitStatus);$($Stats.LastLogonTime);$diff($diff)"
    })>>c:\temp\mbox.csv

    Ciao Gastone


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere

    venerdì 28 dicembre 2018 17:01
    Moderatore
  • Ciao Gastone, giustamente hai ragione :)

    Grazie per i consigli, mettendo insieme tutte le info ho raggiunto un risultato che vada bene.

    Grazie ancora

    Angelo

    venerdì 11 gennaio 2019 13:45