none
No puedo capturar error utilizando Try-Catch con el Command-let "New-MoveRequest" de Exchange 2010 RRS feed

  • Pregunta

  • Buenas tardes

    Estoy tratando de capturar un error al ejecutar el cmd-let "New-MoveRequest" de Exchange 2010 dentro de un script, esta es una parte de mi codigo:

    try
        {
            <#Movimiento del buzón $usuario. Esta línea de código es donde se provocará el error para después capturarlo.#>
            $usuario | New-MoveRequest -TargetDataBase $BasedeDatos -baditemlimit 51 - AcceptLargeDataLoss
        }
    catch
        {
            $ErrorMessage = $_.Exception.Message
        }


    He ejecutado el código paso a paso y me he dado cuenta que la línea dentro de la sentencia "catch", es omitida, como si el error nunca ocurriera, pero en realidad si hay error y es mas o menos de este tipo:

    Mailbox size 21.59 MB (22,639,544 bytes) exceeds target quota 19.53 MB (20,480,000 bytes).
        + CategoryInfo          : InvalidArgument: (JUAN.PEREZ:MailboxOrMailUserIdParameter) [New-MoveRequest], Reci
       pientTaskException
        + FullyQualifiedErrorId : D8B7D150,Microsoft.Exchange.Management.RecipientTasks.NewMoveRequest

    o este otro:

    Active Directory operation failed on DCPRO01.dominio.com.mx. This error is not retriable. Additional informat
    ion: Insufficient access rights to perform the operation.
    Active directory response: 00002098: SecErr: DSID-03150BB9, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0
        + CategoryInfo          : NotSpecified: (0:Int32) [New-MoveRequest], ADOperationException
        + FullyQualifiedErrorId : 7A7739E1,Microsoft.Exchange.Management.RecipientTasks.NewMoveRequest

    Cabe mencionar que ya he capturado errores con este mismo código try-catch, pero con  "New-MoveRequest" no logro hacerlo...

    De antemano agradezco su tiempo y sugerencias.

     






    • Editado unorojo lunes, 2 de diciembre de 2013 15:53
    domingo, 1 de diciembre de 2013 21:17

Todas las respuestas

  • Ya lo he podido resolver con la variable $error, sin necesidad de utilizar Try-Catch. El error se almacena en la siguiente variable:
    $error[0].Exception

    De ahí se puede mandar a exportar o tomarlo con otra variable, como por ejemplo:

    Errorproducido = $error[0].Exception

    Lo que no se es si la variable $error[0] con los corchetes la toma como un arreglo. Gracias de antemano.


    martes, 3 de diciembre de 2013 16:12
  • Buenas unorojo,

    Acabo de ver el post y aunque ya no creo que te ayude mucho porque es de hace 2 años, igual a otra persona sí le sirve.

    Cuando usas TRY-CATCH, te recomiendo que siempre pongas -ErrorAction Stop en la instrucción a controlar.

    Hay comando que Powershell no los entiende como "bloqueantes" y eso hace que el CATCH sea ignorado ya que no lo considera un "error que impida la correcta ejecución".

    try {

               $usuario | New-MoveRequest -TargetDataBase $BasedeDatos -baditemlimit 51 -AcceptLargeDataLoss -ErrorAction Stop

    } catch {

                Write-Host "The execution has failed"

    }

    Saludos,

    Manuel.


    • Editado Manuel Cuesta lunes, 31 de agosto de 2015 17:25 Faltaba poner unas palabras en negrita
    • Propuesto como respuesta Manuel Cuesta domingo, 24 de abril de 2016 15:36
    lunes, 31 de agosto de 2015 17:25