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

1

espero que alguém possa me ajudar a compreender isso, já que está fazendo a minha cabeça um pouco! [Eu sou novo, por favor seja gentil :)]

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

A tarefa foi implantada pelo Oject de Política de Grupo para 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 a saída localhost para C: \ temp (um arquivo notepad.txt simples)

Aqui está o script: [Admito que eu sou um novato no PowerShell, então eu juntei tudo de vários artigos aqui e ali e juntei tudo até que eu conseguisse trabalhar de acordo com 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; Ele funciona se você executar o arquivo em lotes para acioná-lo, como você faria com uma tarefa agendada; e funciona quando acionado como uma Tarefa Agendada .... embora isso aconteça apenas com 75% das nossas máquinas.

Para os outros 25%, a única parte do script que não funciona é a parte send-mailmessage. O arquivo de texto é criado em C: \ temp com o 'hostname' 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 ponto 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, para que eu saiba capaz disso!

Qualquer ajuda ou tempo gasto considerando seria apreciado!

Obrigado, James

    
por user485706 31.08.2018 / 18:16

1 resposta

1

Parece que consertei. Não era autenticação necessária ou conexão segura. Limitei o problema ao erro "A conta 'DOMAIN \ COMPUTER $' forneceu credenciais válidas, mas não tem permissões de envio no conector de recebimento SMTP 'Falha padrão de frontend MAILSERVER; falha na autenticação". nos logs do Exchange 2013 Server. Embora o servidor estivesse no intervalo de IPs, por algum motivo, basta marcar a caixa de seleção Grupos de permissões / usuários do Exchange. Eu não sou o mais sábio sobre o porquê isso foi necessário para apenas alguns dos servidores, de como é relevante, mas funciona e isso é o suficiente! Nosso ambiente Exchange é mid migration e uma grande bagunça no momento, então faz com que a resposta esteja lá.

Obrigado @Todd Wilcox pelos ponteiros. Felicidades

    
por 03.09.2018 / 16:45