none
Unir 2 cmdlets en una sola línea RRS feed

  • Pregunta

  • Hola

    Tengo 2 cmdlets de Exchange, el problema es que tengo que ejecutar los 2 independientemente y luego en excel unirlos ya que uno de ellos no contiene la información de Quota que quiero, estos son los cmdlets:

    Get-MailboxStatistics -server 2k7mb01 | ft DisplayName,Database,StorageLimitStatus,@{label=”Total Size (MB)”;expression={$_.TotalItemSize.Value.ToMB()}},@{label=”Total Delete (MB)”;expression={$_.TotalDeletedItemSize.Value.ToMB()}},ItemCount,DeletedItemCount,ProhibitSendQuota,LastLogoffTime -autosize > d:\ms\ms01.txt

    Get-Mailbox -Server 2k7mb01 -ResultSize Unlimited | ft DisplayName,@{label=”ProhibitSendQ (MB)”;expression={$_.ProhibitSendQuota.Value.ToMB()}} -autosize > d:\ms\ms01c.txt

    En ambos, el display name lo utilize para unir la información de la columna que me falta que es "ProhibitSendQuota", ¿es posible el colocar una sola sentencia y me obtenga la información completa en una sola tabla?

    Gracias de antemano


    • Editado DocMX jueves, 23 de enero de 2014 18:49 Un dato faltante
    jueves, 23 de enero de 2014 18:46

Respuestas

  • Mira si te vale así:

    Get-Mailbox -Server 2k7mb01 -ResultSizeUnlimited |ForEach{$PSQ=$_.ProhibitSendQuota.Value.ToMB();Get-MailBoxStatistics
    $_.Alias|Select-Object DisplayName,Database,StorageLimitStatus,@{label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}
    },@{label="Total Delete (MB)";expression={$_.TotalDeletedItemSize.Value.ToMB()}},ItemCount,DeletedItemCount,ProhibitSend
    Quota,LastLogoffTime,@{label="ProhibitSendQ (MB)";expression={$PSQ}}} |Export-Csv -Path d:\ms\ms01.txt -Encoding Unicode -Delimiter "`t"


    Un saludo

    Fernando Reyes
    MCSA 2000/2003/2012
    MCSE 2000/2003
    MCITP Enterprise Administrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/

    viernes, 24 de enero de 2014 7:48
  • Te está saltando el error por que debe ser alguna cuenta que no tiene establecido un límite de cuenta, con lo que es necesario controlar si tiene o no. Además, puse la respuesta sin probar ni nada, y no caí en la cuenta de que no se puede ejecutar una canalización dentro de otra, con lo que también fallaría habiendo controlado si es nula la propiedad. Así pues, he modificado lo anterior, y probado que funciona. Lo he puesto como un scripillo, para mayor claridad:

    $Resultados = @()
    ForEach($MailBox In (Get-Mailbox -Server 2k7mb01 -ResultSize Unlimited))
    { 
        If($MailBox.ProhibitSendQuota.Value -eq $null)
        {
            $PSQ=0
        }
        Else
        {
            $PSQ=$MailBox.ProhibitSendQuota.Value.ToMB()
        }
        $Resultados += Get-MailBoxStatistics $MailBox.distinguishedName |
                       Select-Object DisplayName,Database,StorageLimitStatus,`
                                     @{label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}},`
                                     @{label="Total Delete (MB)";expression={$_.TotalDeletedItemSize.Value.ToMB()}},`
                                     ItemCount,DeletedItemCount,ProhibitSendQuota,LastLogoffTime,`
                                     @{label="ProhibitSendQ (MB)";expression={$PSQ}}
    }
    $Resultados | Export-CSV -Path d:\ms\ms01.txt -Delimiter "`t" `
                             -Encoding Unicode -NoTypeInformation


    Un saludo

    Fernando Reyes
    MCSA 2000/2003/2012
    MCSE 2000/2003
    MCITP Enterprise Administrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/




    • Marcado como respuesta DocMX miércoles, 12 de febrero de 2014 22:42
    • Editado Fernando Reyes martes, 11 de marzo de 2014 17:27 Error en el código
    miércoles, 29 de enero de 2014 15:45

Todas las respuestas

  • Mira si te vale así:

    Get-Mailbox -Server 2k7mb01 -ResultSizeUnlimited |ForEach{$PSQ=$_.ProhibitSendQuota.Value.ToMB();Get-MailBoxStatistics
    $_.Alias|Select-Object DisplayName,Database,StorageLimitStatus,@{label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}
    },@{label="Total Delete (MB)";expression={$_.TotalDeletedItemSize.Value.ToMB()}},ItemCount,DeletedItemCount,ProhibitSend
    Quota,LastLogoffTime,@{label="ProhibitSendQ (MB)";expression={$PSQ}}} |Export-Csv -Path d:\ms\ms01.txt -Encoding Unicode -Delimiter "`t"


    Un saludo

    Fernando Reyes
    MCSA 2000/2003/2012
    MCSE 2000/2003
    MCITP Enterprise Administrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/

    viernes, 24 de enero de 2014 7:48
  • Hola Fer

    Me manda el siguiente error:

    [PS] D:\ms>.\QInfo.ps1
    You cannot call a method on a null-valued expression.
    At D:\ms\QInfo.ps1:1 char:101
    + Get-Mailbox -Server 2k7mb01 -ResultSize Unlimited | ForEach{$PSQ=$_.ProhibitSendQuota.Value.ToMB <<<< ();Get-MailBoxStatistics $_.Alias | Select-Object DisplayName,Database,StorageLimitStatus,@{label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}},@{label="Total Delete (MB)";expression={$_.TotalDeletedItemSize.Value.ToMB()}},ItemCount,DeletedItemCount,ProhibitSendQuota,LastLogoffTime,@{label="ProhibitSendQ (MB)";expression={$PSQ}}} | Export-Csv -Path d:\ms\ms01.txt -Encoding
     Unicode -Delimiter "`t"
        + CategoryInfo          : InvalidOperation: (ToMB:String) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull

    You cannot call a method on a null-valued expression.
    At D:\ms\QInfo.ps1:1 char:101
    + Get-Mailbox -Server 2k7mb01 -ResultSize Unlimited | ForEach{$PSQ=$_.ProhibitSendQuota.Value.ToMB <<<< ();Get-MailBoxStatistics $_.Alias | Select-Object DisplayName,Database,StorageLimitStatus,@{label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}},@{label="Total Delete (MB)";expression={$_.TotalDeletedItemSize.Value.ToMB()}},ItemCount,DeletedItemCount,ProhibitSendQuota,LastLogoffTime,@{label="ProhibitSendQ (MB)";expression={$PSQ}}} | Export-Csv -Path d:\ms\ms01.txt -Encoding
     Unicode -Delimiter "`t"
        + CategoryInfo          : InvalidOperation: (ToMB:String) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull

    You cannot call a method on a null-valued expression.
    At D:\ms\QInfo.ps1:1 char:101
    + Get-Mailbox -Server 2k7mb01 -ResultSize Unlimited | ForEach{$PSQ=$_.ProhibitSendQuota.Value.ToMB <<<< ();Get-MailBoxStatistics $_.Alias | Select-Object DisplayName,Database,StorageLimitStatus,@{label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}},@{label="Total Delete (MB)";expression={$_.TotalDeletedItemSize.Value.ToMB()}},ItemCount,DeletedItemCount,ProhibitSendQuota,LastLogoffTime,@{label="ProhibitSendQ (MB)";expression={$PSQ}}} | Export-Csv -Path d:\ms\ms01.txt -Encoding
     Unicode -Delimiter "`t"
        + CategoryInfo          : InvalidOperation: (ToMB:String) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull

    Este fue el código, no sé si le falto algún espacio ya que al copiar de la ventan hacia el notepad lo tuve que hacer por partes:

    Get-Mailbox -Server 2k7mb01 -ResultSize Unlimited | ForEach{$PSQ=$_.ProhibitSendQuota.Value.ToMB();Get-MailBoxStatistics $_.Alias | Select-Object DisplayName,Database,StorageLimitStatus,@{label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}},@{label="Total Delete (MB)";expression={$_.TotalDeletedItemSize.Value.ToMB()}},ItemCount,DeletedItemCount,ProhibitSendQuota,LastLogoffTime,@{label="ProhibitSendQ (MB)";expression={$PSQ}}} | Export-Csv -Path d:\ms\ms01.txt -Encoding Unicode -Delimiter "`t"

    ¿Alguna idea de que le puede estar faltando?

    Saludos y gracias de antemano.


    Doc MX

    miércoles, 29 de enero de 2014 0:22
  • Te está saltando el error por que debe ser alguna cuenta que no tiene establecido un límite de cuenta, con lo que es necesario controlar si tiene o no. Además, puse la respuesta sin probar ni nada, y no caí en la cuenta de que no se puede ejecutar una canalización dentro de otra, con lo que también fallaría habiendo controlado si es nula la propiedad. Así pues, he modificado lo anterior, y probado que funciona. Lo he puesto como un scripillo, para mayor claridad:

    $Resultados = @()
    ForEach($MailBox In (Get-Mailbox -Server 2k7mb01 -ResultSize Unlimited))
    { 
        If($MailBox.ProhibitSendQuota.Value -eq $null)
        {
            $PSQ=0
        }
        Else
        {
            $PSQ=$MailBox.ProhibitSendQuota.Value.ToMB()
        }
        $Resultados += Get-MailBoxStatistics $MailBox.distinguishedName |
                       Select-Object DisplayName,Database,StorageLimitStatus,`
                                     @{label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}},`
                                     @{label="Total Delete (MB)";expression={$_.TotalDeletedItemSize.Value.ToMB()}},`
                                     ItemCount,DeletedItemCount,ProhibitSendQuota,LastLogoffTime,`
                                     @{label="ProhibitSendQ (MB)";expression={$PSQ}}
    }
    $Resultados | Export-CSV -Path d:\ms\ms01.txt -Delimiter "`t" `
                             -Encoding Unicode -NoTypeInformation


    Un saludo

    Fernando Reyes
    MCSA 2000/2003/2012
    MCSE 2000/2003
    MCITP Enterprise Administrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/




    • Marcado como respuesta DocMX miércoles, 12 de febrero de 2014 22:42
    • Editado Fernando Reyes martes, 11 de marzo de 2014 17:27 Error en el código
    miércoles, 29 de enero de 2014 15:45
  • Hola Fer, muchas gracias por tu información, ahora lo que hice fue adicionarle otros campos a la consulta, pero el problema es que no devuelve ningún dato, ¿sabes que me puede estar faltando?, asi me quedó el script:


    $Resultados = @()
    ForEach($MailBox In (Get-Mailbox -Server ms05 -ResultSize Unlimited))
    {
        If($PSQ=$MailBox.ProhibitSendQuota.Value -eq $null)
        {
            $PSQ=0
        }
        Else
        {
            $PSQ=$MailBox.ProhibitSendQuota.Value.ToMB()
        }
        $Resultados += Get-MailBoxStatistics $MailBox.distinguishedName |
                       Select-Object DisplayName,SamAccountName,Database,OrganizationalUnit,StorageLimitStatus,PrimarySmtpAddress,WhenCreated,WhenChanged,HiddenFromAddressListsEnabled,AddressListMembership,UseDatabaseQuotaDefaults,ForwardingAddress,DeliverToMailboxAndForward,RecipientLimits,`
                                     @{label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}},`
                                     @{label="Total Delete (MB)";expression={$_.TotalDeletedItemSize.Value.ToMB()}},`
                                     ItemCount,DeletedItemCount,ProhibitSendQuota,LastLoggedOnUserAccount,LastLogonTime,LastLogoffTime,ManagedFolderMailboxPolicy,`
                                     @{label="ProhibitSendQ (MB)";expression={$PSQ}}
    }
    $Resultados | Export-CSV -Path d:\ms\ms05.txt -Delimiter "`t" `
                             -Encoding Unicode -NoTypeInformation

    Los campos adicionados fueron:

    -SamAccountName, OrganizationalUnit,PrimarySmtpAddress,WhenCreated,WhenChanged,HiddenFromAddressListEnabled

    -AddressListMembership,UseDatabaseQuotaDefaults,ForwardingAddress,DeliverToMailboxAndForward,RecipientLimits,ManagedFolderMailboxPolicy

    Según yo, solo es requerido solicitarlos o ¿le falta algo para que sean mostrados?

    Gracias


    Doc MX

    miércoles, 26 de febrero de 2014 19:25
  • Revisa el código que te puse, algún copy paste traicionero había puesto un error en el primer If. Y perdona la tardanza en responder, he tenido una intervención quirúrgica y desde entonces no había entrado en los foros

    Un saludo

    Fernando Reyes
    MCSA 2000/2003/2012
    MCSE 2000/2003
    MCITP Enterprise Administrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/

    martes, 11 de marzo de 2014 17:30