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) 
    $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 "." 
        $DataOutput = $Server + "`t" + "System Not Reachable" 
        Add-Content output.txt -Value $DataOutput 
        Write-Host -NoNewline "."     

Listar el orden de los DNS


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

function Set-DNSServerSearchOrder { 
        [String[]]$DNSServers = @("","") 
$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,( with the following 
#changes to the script which I have numbered below.   
#  1.) You may also need to install Microsoft Update "". 
# 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 



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 
# Creative Commons Attribution-ShareAlike 3.0 
# Unported License, see for details  
# Special thanks to Ben Wilkinson and ideas from his script 
# at 

# 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 

# 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

Get-IPAddress -HostName brwpc3

Get-IPAddress -HostName brwpc3 -IPV6only

Get-IPAddress -HostName brwpc3 -IPV4only

Sigue leyendo