Check connectivity of a list of servers

Check connectivity of a list of servers

# Script to check whether a list of servers is reachable over the network 
# Input is taken from a file ServerList.txt and output is written to the file Output.txt 
# Input and output files should be existing in the working directory of script 

$ServerList=Get-Content serverlist.txt 
clear-Content output.txt 
ForEach ( $Server in $ServerList) 
    { 
    $result=0 
    $ping = new-object System.Net.NetworkInformation.Ping 
    $result = $ping.send($Server) 
    if ($result.Status -eq "TimedOut") 
        {  
        $DataOutput = $Server + "`t" + "Network Request Timed Out" 
        Add-Content output.txt -Value $DataOutput 
        Write-Host -NoNewline "." 
        } 
    elseif ($result.Status -eq "Success") 
        { 
        $DataOutput = $Server + "`t" + $result.Address 
        Add-Content output.txt -Value $DataOutput 
        Write-Host -NoNewline "." 
        } 
    else 
        { 
        $DataOutput = $Server + "`t" + "System Not Reachable" 
        Add-Content output.txt -Value $DataOutput 
        Write-Host -NoNewline "."     
        } 
    }

Listar el orden de los DNS

Set-DNSServerSearchOrder

Get-WmiObject -Class Win32_NetworkAdapterConfiguration 
-ComputerName "Server01" -Filter "IPEnabled=TRUE" 
| Select PSComputerName,DNSServerSearchOrder


function Set-DNSServerSearchOrder { 
    Param( 
        [Parameter(ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)] 
        $ComputerName=$Env:ComputerName, 
        [String[]]$DNSServers = @("10.10.10.1","10.10.10.2") 
        ) 
 
$NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration
 -ComputerName $ComputerName -Filter "IPEnabled=TRUE" 
 
foreach($NIC in $NICs) {$NIC.SetDNSServerSearchOrder($DNSServers) | out-null} 
}

List Network Adapter Configuration Properties

List Network Adapter Configuration Properties

Prometo publicar en breve una serie de modificaciones a este script para que genere un fichero de respuestas que se pueda procesar …

#This code demonstrates how to list Computer System information for the local system  
#without any plug-ins.  
# 
#To run this script within your environment you should only need to copy and paste this script into 
#either Windows Powershell ISE or PowerGUI Script Editor,(http://powergui.org) with the following 
#changes to the script which I have numbered below.   
#  1.) You may also need to install Microsoft Update "http://support.microsoft.com/kb/968930". 
# 
# You may change the "." to a computer name, (example: "ComputerName") to get remote system information 

$strComputer = "." 
$objWin32NAC = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -namespace "root\CIMV2"
 -computername $strComputer -Filter "IPEnabled = 'True'" 
foreach ($objNACItem in $objWin32NAC) 
{ 
  Write-Host "Caption:" $objNACItem.Caption 
  Write-Host "DefaultIPGateway:" $objNACItem.DefaultIPGateway 
  Write-Host "Description:" $objNACItem.Description 
  Write-Host "DHCPEnabled:" $objNACItem.DHCPEnabled 
  Write-Host "DHCPLeaseExpires:" $objNACItem.DHCPLeaseExpires 
  Write-Host "DHCPLeaseObtained:" $objNACItem.DHCPLeaseObtained 
  Write-Host "DHCPServer:" $objNACItem.DHCPServer 
  Write-Host "DNSDomain:" $objNACItem.DNSDomain 
  Write-Host "DNSDomainSuffixSearchOrder:" $objNACItem.DNSDomainSuffixSearchOrder 
  Write-Host "DNSEnabledForWINSResolution:" $objNACItem.DNSEnabledForWINSResolution 
  Write-Host "DNSHostName:" $objNACItem.DNSHostName 
  Write-Host "DNSServerSearchOrder:" $objNACItem.DNSServerSearchOrder 
  Write-Host "DomainDNSRegistrationEnabled:" $objNACItem.DomainDNSRegistrationEnabled 
  Write-Host "FullDNSRegistrationEnabled:" $objNACItem.FullDNSRegistrationEnabled 
  Write-Host "GatewayCostMetric:" $objNACItem.GatewayCostMetric 
  Write-Host "Index:" $objNACItem.Index 
  Write-Host "IPAddress:" $objNACItem.IPAddress 
  Write-Host "IPConnectionMetric:" $objNACItem.IPConnectionMetric 
  Write-Host "IPEnabled:" $objNACItem.IPEnabled 
  Write-Host "IPFilterSecurityEnabled:" $objNACItem.IPFilterSecurityEnabled 
#  Write-Host "IPPortSecurityEnabled:" $objNACItem.IPPortSecurityEnabled 
#  Write-Host "IPSecPermitIPProtocols:" $objNACItem.IPSecPermitIPProtocols 
#  Write-Host "IPSecPermitTCPPorts:" $objNACItem.IPSecPermitTCPPorts 
#  Write-Host "IPSecPermitUDPPorts:" $objNACItem.IPSecPermitUDPPorts 
  Write-Host "IPSubnet:" $objNACItem.IPSubnet 
  Write-Host "IPXAddress:" $objNACItem.IPXAddress 
  Write-Host "IPXEnabled:" $objNACItem.IPXEnabled 
  Write-Host "IPXFrameType:" $objNACItem.IPXFrameType 
  Write-Host "IPXMediaType:" $objNACItem.IPXMediaType 
  Write-Host "IPXNetworkNumber:" $objNACItem.IPXNetworkNumber 
  Write-Host "IPXVirtualNetNumber:" $objNACItem.IPXVirtualNetNumber 
  Write-Host "MACAddress:" $objNACItem.MACAddress 
  Write-Host "ServiceName:" $objNACItem.ServiceName 
  Write-Host "TcpipNetbiosOptions:" $objNACItem.TcpipNetbiosOptions 
  Write-Host "WINSEnableLMHostsLookup:" $objNACItem.WINSEnableLMHostsLookup 
#  Write-Host "WINSHostLookupFile:" $objNACItem.WINSHostLookupFile 
  Write-Host "WINSPrimaryServer:" $objNACItem.WINSPrimaryServer 
  Write-Host "WINSSecondaryServer:" $objNACItem.WINSSecondaryServer 

}

WAN MONITOR

Este es unos de esos script que se echa de menos cuando se necesita justificar esos “pequeños problemas” que de vez en cuando surgen en la red de cualquier infraestructura.

Útil a su manera, os dejo el fuente original.

# wan-monitor1 is a Powershell script that reads a text file for hosts that it should monitor, then 
# approximately every other minute the ping response time is logged to a comma separated value (CSV) 
# text file for later processing. I use this script in the real world to watch wide area network (WAN) 
# connections for troubleshooting or network configuration change events. 
# 
# The script will only run from when it was started until the timer (controlled by the value set for $snooz) 
# runs out. This way you can safely start the script and know it will shut itself off if you forget to do so. 
# 
# See the following URL for development updates/versions 
# http://kamsalisbury.com/wan-monitor1.ps 
# 
# Creative Commons Attribution-ShareAlike 3.0 
# Unported License, see http://creativecommons.org/licenses/by-sa/3.0/ for details  
# 
# Special thanks to Ben Wilkinson and ideas from his script 
# at http://gallery.technet.microsoft.com/scriptcenter/d0670079-6158-4dc5-a9da-b261c70e4b7d 

# Declair variables just in case 
$start_time = (Get-Date) 
$end_time = (Get-Date).AddHours(8) # Change your desired runtime here 

# Begin loop 
While ((Get-Date) -le $end_time) { 
$snooz = Get-Random -minimum 60 -maximum 121 # How randomly, How long to pause in the monitor loop 
# Read the items to monitor, 'monitored.txt' should have one host per 
# a line, '#' are allowed to provide comments or disable a host temporarily 
get-content monitored.txt | Where-Object {!($_ -match "#")} |   
ForEach-Object {     
    $mon = Test-Connection -count 1 -computername $_ -ea silentlycontinue | Select-Object Address,ResponseTime 
    $monned = (Get-Date).ToString("MM/dd/yy") + "," + (Get-Date).ToString("hh:mm") + "," + $mon.Address + "," + $mon.ResponseTime 
    $monned | Out-File exported.csv -append 
    $monned 
} 

# Wait before the next cycle 
Start-Sleep -seconds $snooz 

# End loop 
}

Resolve IP address from Hostname

Nos devuelve la dirección IP del nombre del servidor que le pasamos. En esta primera versión no incorporamos la funcionalidad de poder leer un fichero con los nombres y generar un fichero, con el nombre del servidor y la ip por la que responde. Esto lo dejaremos para una segunda fase.

$ip = Get-IPAddress -HostName esxserver001.domain.org

Get-IPAddress -HostName brwpc3

Get-IPAddress -HostName brwpc3 -IPV6only

Get-IPAddress -HostName brwpc3 -IPV4only

Sigue leyendo

Conceptos básicos (I)

Todos los días oímos hablar de ella, por activa o por pasiva, pero si alguna vez os habeis detenido a escuchar lo que se dice, vereís que no tiene nada que ver con la realidad. Por eso se me ha ocurrido incluir en mi blog, una serie de “conceptos básicos” que creo que son imprescindibles.

Hay que formar parte de algo, teniendo en cuenta el resultado final, deberemos de evaluar todas las partes de manera independiente.

Alta disponibilidad (High availability) es un protocolo de diseño del sistema y su implementación asociada que asegura un cierto grado absoluto de continuidad operacional durante un período de medición dado. Disponibilidad se refiere a la habilidad de la comunidad de usuarios para acceder al sistema, someter nuevos trabajos, actualizar o alterar trabajos existentes o recoger los resultados de trabajos previos. Si un usuario no puede acceder al sistema se dice que está no disponible. El término tiempo de inactividad (downtime) es usado para definir cuándo el sistema no está disponible.