O script do PowerShell na tarefa agendada envia email em alguns servidores, mas não em outros

O script do PowerShell na tarefa agendada envia email em alguns servidores, mas não em outros

espero que alguém possa me ajudar a entender isso, pois está me incomodando um pouco! [Sou novo, então, por favor, seja gentil :)]

Recentemente, configurei um script PS para ser executado pela tarefa agendada do Windows na inicialização, por meio de arquivo em lote para ser executado com a opção -ExecutionPolicy Bypass. O objetivo é enviar uma lista de Serviços Automáticos que não estão em execução para a nossa lista de distribuição de administradores de sistemas para que possamos intervir se necessário.

A tarefa foi implantada pelo Group Policy Oject em vários servidores Windows 2008, 2008 R2 e Windows 2012 R2. A tarefa é executada como SYSTEM com privilégios mais altos e nossa floresta/domínio está funcionando no nível do Server 2012 R2. O script é executado a partir de um UNC em nossa SAN e envolve uma saída localhost para C:\temp (um arquivo notepad.txt simples)

Aqui está o script: [Reconheço que sou bastante novato no PowerShell, então juntei-o a partir de vários artigos daqui e dali e juntei-o até fazê-lo funcionar em um padrão aceitável!]

#PowerScript task for reporting the name of any service with automatic startup mode that are not are running. 
$Results = @()
$hst = hostname
$msgbdy = "This machine has restarted.
Check the attached file for any services with Automatic startup configuration that are not running. 
[NB: Services configured to startup in Automatic (Delayed Start) are ignored]"
#GET AUTOMATIC (NOT DELAYED-START) SERVICES
$Results += Get-WmiObject -Class Win32_Service -Filter {State != 'Running' and StartMode = 'Auto'} |
ForEach-Object {Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\$($_.Name)" |
Where-Object {$_.Start -eq 2 -and $_.DelayedAutoStart -ne 1}} |
Select-Object -Property @{label='ServiceName';expression={$_.PSChildName}}
#OUTPUT TO TXT
$Results | Out-File "c:\temp\$hst.txt"
#PAUSE FOR 2 SECONDS
Start-Sleep -s 2
#SEND OUTPUT FILE BY EMAIL
send-mailmessage -from "[email protected]" -to "[email protected]" -subject "$hst Automatic Services Check" -Attachments "c:\temp\$hst.txt" -body $msgbdy -priority High -smtpServer server.ourdomain.co.uk

Agora, o script funciona se for executado diretamente no prompt do PowerShell; funciona se você executar o arquivo em lote para acioná-lo, como faria com uma tarefa agendada; e funciona quando acionado como uma tarefa agendada... embora isso aconteça apenas em cerca de 75% de nossas máquinas.

Para os outros 25%, a única parte do script que não funciona é a parte de envio de mensagem. O arquivo de texto é criado em C:\temp com o 'nome do host' etc. para identificar de qual máquina ele é, e o conteúdo é preciso. Eles simplesmente não terminam o trabalho e enviam o relatório por e-mail (que é o objetivo de todo o exercício :)

O que é mais frustrante é que essas "máquinas problemáticas" enviarão o e-mail se eu acionar o processo executando o arquivo em lote ou o script do PowerShell diretamente quando conectado à área de trabalho do servidor com minha conta de usuário, então sei que eles são capazes disso !

Qualquer ajuda ou tempo gasto considerando seria apreciado!

Obrigado, James

Responder1

Parece que consegui consertar. Não foi necessária autenticação ou conexão segura. Limitei o problema ao erro "A conta 'DOMAIN\COMPUTER$' forneceu credenciais válidas, mas não possui permissões de envio no conector de recebimento SMTP 'Default Frontend MAILSERVER; falha na autenticação." nos logs do Exchange 2013 Server. Embora o servidor estivesse no intervalo de IP, por algum motivo, basta marcar a caixa de seleção Grupos de permissão/usuários do Exchange para permitir isso. Não sei por que isso foi necessário apenas para alguns servidores, como é relevante, mas funciona e é o suficiente! Nosso ambiente Exchange está no meio da migração e está bastante bagunçado no momento, então parece que a resposta está aí.

Obrigado @Todd Wilcox pelas dicas. Saúde

informação relacionada