清理者问题的答案帮助我了解了一些Windows DHCP服务器 – 当非ADjoin设备获得IP地址时收到通知,但问题的答案涉及到Quest Poweshell cmdlet。 我想用普通的Powershell v4 cmdlet来实现一个解决scheme。
我目前没有收到任何新的DHCP租约的通知。 当有人插入我们的插孔之一时,我希望收到通知,从我们的Windows Server 2012 DHCP服务器获取DHCP租约,但尚未joinAD。 所以我想要一个非ADjoin设备的新DHCP租约的电子邮件通知。
我已经把一些Powershell代码放在一起,从上面提到的清理者的问题中借用一些。
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> <BR>' $mailer = new-object Net.Mail.SMTPclient($smtpserver) $msg = new-object Net.Mail.MailMessage($from,$to,$subject,$body) $msg.IsBodyHTML = $true $mailer.send($msg)
我收到电子邮件“非ADjoinDHCP客户端”,但电子邮件中没有任何对象。 我们有非ADjoinDHCP租约(我连接了非AD笔记本电脑的networking进行testing),但笔记本电脑没有在电子邮件中显示。 运行脚本后,我也没有收到任何红色testing。
如果有人有任何build议,请让我知道。 我的脚本里显然有些地方出了问题。 我个人认为这可能与我的AD cmdlet和CSV导入有关。
$NameResult = Get-ADComputer -Filter *
此查询将返回AD中的所有计算机 ,其结果永远不会为空; 您应该查询您正在尝试查找的实际计算机名称:
$NameResult = Get-ADComputer $_.Name
此外,DHCP日志文件中的名称可能是FQDN(如computer.domain.local ); 如果是这样的话,在将它们送入Get-AD计算机之前,需要去掉域后缀,它只需要计算机名称:
$ComputerName = $_.Name.Replace(".domain.local",$null) $Result = Get-ADComputer $ComputerName