Con el PowerShell, puedo realizar una acción por un objeto pero también puedo realizarlo por 10, 100, o 1.000 objetos.
El servidor de Exchange 2010 puede tener una o más bases de datos, en este caso nos conectaremos a una principal. Los comandos que ejecutaremos podrán ser ejecutados en una sola línea de comando.
Tamaños y Exportación Excel
1) Tamaños
Vamos a tirar unos comandos para comprobar el tamaño de los buzones de compañía y el Alias. Estaremos utilizando una sentencia que a mi criterio es una de las más importantes para este caso en un PowerShell ,
Get-MailboxStatistics.
ForEach($MailBox In (Get-Mailbox -ResultSize Unlimited))
{
Get-MailboxStatistics -Identity $MailBox | `
Format-Table @{Label="sAMAccountName";Expression={$MailBox.sAMAccountName}}, `
@{Label="Size";Expression={$_.TotalItemSize.Value.ToBytes()}}, `
@{Label="DeletedSize";Expression={$_.TotalDeletedItemSize.Value.ToBytes()}}, `
@{Label="TotalSize";Expression={$_.TotalItemSize.Value.ToBytes() + $_.TotalDeletedItemSize.Value.ToBytes()}} -AutoSize
}
2) Exportación
Con estas sentencias estaremos exportando a un Excel, siguiendo estas sentencias lograremos una exitosa exportación.
Add-PsSnapin Microsoft.Exchange.Management.PowerShell.Admin
$Devolucion = @()
ForEach($MailBox In (Get-Mailbox -ResultSize Unlimited))
{
$Estadisticas = $null
$Buzon = New-Object PsCustomObject | Select-Object sAMAccountName, `
Size, `
DeletedSize, `
TotalSize
$Estadisticas = Get-MailboxStatistics -Identity $MailBox -ErrorAction SilentlyContinue
If($Estadisticas -ne $null)
{
$Buzon.sAMAccountName = $MailBox.sAMAccountName
$Buzon.Size = $Estadisticas.TotalItemSize.Value.ToBytes()
$Buzon.DeletedSize = $Estadisticas.TotalDeletedItemSize.Value.ToBytes()
$Buzon.TotalSize = $Buzon.Size + $Buzon.DeletedSize
$Devolucion += $Buzon
}
}
$Devolucion | Export-Csv -Delimiter "," -Path c:usersSOLVETICDocumentsbuzones.csv -NoTypeInformation
$Devolucion = $null
Para que se ejecute como tarea programada, se podrá guardar en un fichero de texto de extensión “PS1” y también se podrá ejecutar desde un .bat .
3) Ejecutando el Script
PowerShell ejecuta scripts con extensión “.PS1”, de forma que puedes escribir todo el código en un Archivo de texto con la extensión indicada. Para editar scripts sólo necesitas un editor de texto. Si quieres más funcionalidades como depuración y ver a tiempo real el valor de las variables, puedes utilizar PowerGui.
Para ejecutar un script de PowerShell tenemos que indicar su ubicación de forma absoluta. Existen dos formas de hacerlo:
- Desde la línea de comandos convencional:
powershell . listar-buzones.ps1
En este caso, el archivo script listar-buzones.ps1 debe estar ubicado en la carpeta actual. Tenemos que escribir toda la ruta si el script está en otra carpeta que no es la actual:
powershell c:scriptslistar-buzones.ps1
- O desde la línea de comandos de PowerShell (estamos en la misma carpeta que el script):
powershell>. listar-buzones.ps1
- Indicando la ruta completa desde la línea de comandos de PowerShell:
PoweShell>c:scripts listar-buzones.ps1
Siguiendo estos pasos podremos comenzar a manejar sin ningún tipo de problemas, un PowerShell para nuestras sentencias sobre un Microsoft Exchange 2010.