none
Ajuda Script de Get-MessageTrackingLog por usuario RRS feed

  • Pergunta

  • Fala pessoal Blz??

    Pessoal preciso de uma ajuda dos Gurus do Exchange e Powershell, o negocio é o seguinte.. Estou precisando criar relatorios por usuario de emails que foram bloqueados por terem excedido o tamanho maximo permitido, então preciso gerar um relatorio e mandar o email para o usuario até ai, tudo bem, o que estou apanhando é fazer isso no PowerShell, o que estou querendo fazer é mais ou menos o seguinte:

    Get-MessageTrackingLog -Server "HUB01" -Start (Get-Date).AddHours(-24) -EventID FAIL | where {$_.RecipientStatus -like "*RecipSizeLimit*"}|select sender,recipients,messageSubject |Where-Object {$_.recipients -like $user}

    A duvida é como faço para dentro do Script eu alterar essa variavel User, eu achei pensei nisso:

    Get-Mailbox | ForEach { $_.Name }

    $User= nome do usuario pego no comando acima

    Get-MessageTrackingLog -Server "HUB01" -Start (Get-Date).AddHours(-24) -EventID FAIL | where {$_.RecipientStatus -like "*RecipSizeLimit*"}|select sender,recipients,messageSubject |Where-Object {$_.recipients -like $user}

    Fazer um For Each, pegar o email do usuario ou nome e substituir naquela variavel $USER, gero o relatorio mando por email e passo para o outro usuario, só que não estou conseguindo fazer, alguem poderia me ajudar????

    Obrigado a quem puder me ajudar....


    Marcos R. Valente | IT Consulting / Support Tecnical. ACP - Altiris Certified Professional. MCP - MCSA + Mailing 2000/2003 Email: marcos.r.valente@gmail.com MSN: coracaovalente1971@hotmail.com

    sexta-feira, 22 de fevereiro de 2013 20:58

Todas as Respostas

  • Bom apesar de ninguem ter ao menos se manifestado pra dizer sei ou não, vou passar o Script que criei, vai que alguem tenha a mesma duvida que eu, não vou negar conhecimento então vamos lá..

    #------------------------------------------------------------------------------------------

    #Inicio do Script

    #Gero um arquivo texto com todos os usuarios do Exchange

    Get-mailbox |select Windowsemail* | Ft > c:\result\email.txt  

    $data  = Get-Content "c:\result\email.txt"

    foreach ($line in $data)
    {
        [String]$user=$line
        $user= $user -replace " ",""
        $RESULT=0
        $RESULT=Get-MessageTrackingLog -Server "hub02" -Start (Get-Date).AddHours(-24) -EventID FAIL | where {$_.RecipientStatus -like "*RecipSizeLimit*"}|select timeStamp,recipients, sender,messageSubject |Where-Object {$_.recipients -like $user}|fl

        If ($result.length -ge 1)
           {
            $file= $user.remove(5)
            $result | out-file c:\result\$file.txt
            SendML $file,"marcos.r.valente@gmail.com" "Lista de emails barrados devido a tamanho do anexo, Favor Verificar no corpo do Email. $User" "c:\result\$file.txt"
               }
        Else {    
             Write-host $user - NAO
            #Start-Sleep -m 1000
                }
    }

    Pode ser que tenha alguma forma mais inteligente de fazer isso, porem essa forma funcionou perfeitamente, então com isso agora, consigo mandar um email para os meus usuarios com todos os emails bloqueados devido a ter execdido o tamanho do anexo nas ultimas 24Hrs.

    Ah! Só um detalhe, para que o Texto não fique enorme mandei apenas o Script que prepara o texto para mandar, mais se alquem precisar posso mandar a rotina inteira inclusive com a função que manda o email OK..

    Valeu pessoal e obrigado inclusive aos que não puderam ajudar...


    Marcos R. Valente | IT Consulting / Support Tecnical. ACP - Altiris Certified Professional. MCP - MCSA + Mailing 2000/2003 Email: marcos.r.valente@gmail.com MSN: coracaovalente1971@hotmail.com

    sexta-feira, 8 de março de 2013 21:01