Como receber notificações por e-mail de não-AD associadas a concessões DHCP?

1

Esta resposta à pergunta doCleaner ajudou-me a Servidor DHCP do Windows - receba uma notificação quando um dispositivo não associado ao AD obtém um endereço IP , mas a resposta a essa pergunta envolvia os cmdlets do Quest Poweshell. Eu gostaria de obter uma solução com cmdlets simples e antigos do Powershell v4.

Problema

Atualmente, não recebo notificação de novas concessões de DHCP. Gostaria de receber notificações quando alguém se conectar a um dos nossos conectores aqui, receber uma concessão de DHCP do servidor DHCP do Windows Server 2012, mas não tiver ingressado no AD. Por isso, desejo uma notificação por email de novas concessões de DHCP para dispositivos não associados ao AD.

O que eu tentei

Eu montei um código do Powershell, pegando emprestado alguns da pergunta doCleaner mencionada acima.

 Get-DhcpServerv4Lease -allleases -ScopeId #myscopeIDhere | Select-Object @{expression= {$_.hostname}; label='name' } | export-CSV -notypeinformation C:\dhcp\LeaseLog.csv

import-module activedirectory

#get input CSV

$leaselogpath = "c:\DHCP\LeaseLog.csv"
Import-csv -path $leaselogpath | 
#query AD for computer name based on csv log
foreach-object '
{ 
   $NameResult = Get-ADComputer -Filter * 
   If ($NameResult -eq $null) {$RogueSystem = $_.name}
   $RogueSystem | Out-File C:\DHCP\RogueClients.txt -Append
   $RogueSystem = $null

}
Get-Content C:\DHCP\RogueClients.txt | Select-Object -Unique | Out-File C:\DHCP\RogueClientsFinal.txt
Remove-Item C:\DHCP\RogueClients.txt

#send email to sysadmin
$smtpserver = #my email server IP address here
$from="[email protected]"
$to="[email protected]"
$subject="Non-AD joined DHCP clients"
$body= (Get-Content C:\DHCP\RogueClientsFinal.txt) -join '<BR>&nbsp;<BR>'
$mailer = new-object Net.Mail.SMTPclient($smtpserver)
$msg = new-object Net.Mail.MailMessage($from,$to,$subject,$body)
$msg.IsBodyHTML = $true
$mailer.send($msg)

Eu recebo o email "Não-AD associado a clientes DHCP", mas não há objetos no email. Nós temos não-AD juntou concessões de DHCP (eu conectei um laptop não-AD na rede para testes), mas o laptop não aparece no e-mail. Eu não recebo nenhum teste vermelho depois de executar o script.

Se alguém tiver sugestões, por favor me avise. Eu obviamente tenho algo errado em algum lugar no meu script. Pessoalmente, acho que isso pode ter a ver com meus cmdlets do AD e a importação de CSV.

    
por Art.Vandelay05 02.09.2015 / 23:44

1 resposta

1
$NameResult = Get-ADComputer -Filter *

Esta consulta retornará todos os computadores no AD , e seu resultado nunca estará vazio; você deve consultar o nome real do computador que está tentando encontrar:

$NameResult = Get-ADComputer $_.Name

Além disso, os nomes nos arquivos de log do DHCP provavelmente serão FQDNs (como computer.domain.local ); Se esse for o caso, você precisará remover o sufixo de domínio antes de alimentá-los no Get-ADcomputer , que só quer o nome do computador:

$ComputerName = $_.Name.Replace(".domain.local",$null)
$Result = Get-ADComputer $ComputerName
    
por 03.09.2015 / 00:01