$ahouis = @("00-19-77","88-5b-dd","08-EA-44","D8-54-A2","C4-13-E2","40-18-b1") #get domain admin creds $dacreds = $(Get-Credential -Message "Please enter domain admin credentials for pulling DHCP info.") $creds = $(Get-Credential -Message "Please enter AeroHive SSH username and password.") $server = Read-Host -Prompt "DHCP Server name?" $dhcpscopes = Invoke-Command -Credential $dacreds -ComputerName $server -ScriptBlock { Get-DhcpServerv4Scope } | select ScopeId $dhcpleases = $dhcpscopes | ForEach-Object { $scope = $_.'ScopeID'; Invoke-Command -Credential $dacreds -ComputerName $server -ScriptBlock { Get-DhcpServerv4Lease -ScopeId $Using:scope} } $aps = @() $ahouis | ForEach-Object { $oui = $_ $aps += $dhcpleases | ? { $_.'ClientId' -like "$($oui)*" } } $aps | select -ExpandProperty ipaddress | % { if (Test-Connection -Count 1 -ComputerName $_) { New-SSHSession -ComputerName $_ -Credential $creds -AcceptKey -Force } else { return } } #Get the sessions where we successfully made a connection. Get-SSHSession | ? { $_.'Connected' -eq $True } | select -ExpandProperty SessionID | % { $session = Get-SSHSession -SessionId $_ $stream = $session.Session.CreateShellStream("dumb",0,0,0,0,1000) $stream.Write("show capwap client | include `"Primary Name`"`n") Start-Sleep -Seconds 1 $result = $stream.Read() $result.Split([System.Environment]::NewLine) | % { if ($_ -like "*Primary Name:*") { if ($_ -like "*:cloud-va2-cws-1*") { write-host "Already updated" #already done } elseif ($_ -like "*aerohive.com") { #command ran successfully but the host needs updated. #$stream.Write("capwap client name cloud-va2-cws-1.aerohive.com`n") write-host "Host $($session.Host) needs updated" write-host $_ $stream.Write("capwap client server name cloud-va2-cws-1.aerohive.com`n") } } } } #disconnect all sessions Get-SSHSession | Remove-SSHSession exit