Principales respuestas
Unir 2 cmdlets en una sola línea

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/- Propuesto como respuesta Marc Salvador viernes, 24 de enero de 2014 9:51
- Marcado como respuesta Uriel Almendra martes, 28 de enero de 2014 20:15
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/- Propuesto como respuesta Marc Salvador viernes, 24 de enero de 2014 9:51
- Marcado como respuesta Uriel Almendra martes, 28 de enero de 2014 20:15
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 : InvokeMethodOnNullYou 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 : InvokeMethodOnNullYou 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 : InvokeMethodOnNullEste 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 -NoTypeInformationLos 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