none
Script anidado Office 365 - (Get-MsolUser - Get-Mailbox - Get-MailboxStatics) RRS feed

  • Pregunta

  • Estimados:

    Requiero de su ayuda para realizar un sript de Office 365 el cual me permita extraer la información de los usuarios:

    • UPN (Get-MsolUser - Get-Mailbox)
    • Displayname (Get-MsolUser - Get-Mailbox)
    • ItemCount (Get-MailboxStatics - Cantidad total de correos en el buzón)
    • WhenCreatedMailbox (Get-MailboxStatics - Fecha de creación)
    • TotalSizeInMB (Get-MailboxStatics - Cantidad de MB que el usuario tiene en su buzón)
    • LastLogonTime (Get-MailboxStatics - Ultimo inicio de sesión)
    • MobilePhone (Get-MsolUser - Atributo MobilePhone)
    • Fax (Get-MsolUser - Atributo Fax)
    • Observaciones (Observaciones que se agregaran mediante un IF)

    Tengo que lograr de alguna forma imprimir el UPN del usuario que se encuentra en el archivo a exportar (solo ocupo este atributo) en caso que dicho usuario no exista, lo escribe en el archivo de salida sin datos. El mismo caso si el usuario está en la papelera, si o si debo ponerlo en una fila del archivo.

    Clear-Host
    Write-Host ""
    Write-Host ""
    Write-Host -foregroundcolor yellow -object "  Ingrese el nombre del archivo  y la extension .CSV (EJ: Usuarios.csv): " -NoNewLine
    #Lee el nombre de archivo
    $Nombre = Read-Host
    
    #Guarda el nombre del archivo antes del .csv
    $NombreArchivo = $Nombre.Split(".")[0]
    
    #Crea el nombre final de salida del archivo
    $NombreFinal = $NombreArchivo +"_Resultado"+".csv"
    
    Write-Host -foregroundcolor green -object "  Script en ejecucion, espere por favor..."
    
    $Resultado=@() 
    $mailboxes = import-csv $Nombre | foreach {Get-Mailbox -Identity $_.UserPrincipalName -ResultSize Unlimited; Start-Sleep -milliseconds 500}
    $totalmbx = $mailboxes.Count
    $i = 1 
    
    $mailboxes | ForEach-Object {
    
    	$i++
    	$mbx = $_
    	$mbs = Get-MailboxStatistics -Identity $mbx.UserPrincipalName | Select LastLogonTime, TotalItemSize, ItemCount
    		if ($mbs.LastLogonTime -eq $null)
    			{$lt = "Never Logged In"}
    				else{$lt = $mbs.LastLogonTime}
    				
    		if ($mbs.TotalItemSize -ne $Null){
    				$size = [math]::Round(($mbs.TotalItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1MB),0)}
    					else{$size = 0}
    					#$mailbox
     
    Write-Progress -activity "Usuario procesado $mbx" -status "$i out of $totalmbx completed"
     
    $FechaSesion = $lt.ToString().Split(" ")[0]
    $FechaCreacion = $mbx.WhenMailboxCreated.ToString().Split(" ")[0]
    
    $Resultado += New-Object PSObject -property @{ 
    Name = $mbx.DisplayName
    UserPrincipalName = $mbx.UserPrincipalName
    ItemCount = $mbs.ItemCount
    WhenCreatedMailbox = $FechaCreacion
    TotalSizeInMB = $size
    LastLogonTime = $FechaSesion }
    }
    
    $Resultado | Export-CSV $NombreFinal -NoTypeInformation -Encoding UTF8
    Write-Host ""
    Write-Host -foregroundcolor cyan -object "  Script finalizado de manera correcta. El nombre del archivo generado con la reporteria es: --> $NombreFinal"
    Write-Host ""
    
    #Este es el otro Script que me gustaria agregar al resultado de informacion
    $Result=@() 
    $Users = Import-Csv $Nombre
    foreach($user in $Users)
    {
        $sam = $user.UserPrincipalName
    	#muestra UPN del documento
    	
        try
        {
            $account = Get-MsolUser -UserPrincipalName $sam | select userprincipalname,MobilePhone,fax
    		#muestra usuario con sus atributos
        }
        catch
        {
        }
        if($account)
        {
            $Obtencion = Get-MsolUser -UserPrincipalName $sam | select userprincipalname,MobilePhone,fax
    		$Activo = "Usuario activo"
    		#$Obtencion
    		#muestra userprincipalname,MobilePhone,fax del usuario activo
        }
            else
        {
    		$Obtencion = Get-MsolUser -ReturnDeletedUsers -UserPrincipalName $sam | select userprincipalname,MobilePhone,fax
    		$Activo = "Usuario en papelera"
    		#$Obtencion
    		#muestra userprincipalname,MobilePhone,fax del usuario activo
        }
    	$Result += New-Object PSObject -property @{ 
    	UserPrincipalName = $sam
    	Observaciones = $Activo
    	MobilePhone = $Obtencion.MobilePhone
    	fax = $Obtencion.fax
    }
    }
    $Result| Export-CSV Rut.csv -NoTypeInformation

    De ante mano muchas gracias.

    martes, 26 de diciembre de 2017 18:52