Inicio Soporte Técnico PowerShell – Script para saber que computadoras tienen IP fija y dinámica...

PowerShell – Script para saber que computadoras tienen IP fija y dinámica en la red

3424
0

Surgió la necesidad de obtener que computadoras tienen IP fija y dinámica en nuestra red de trabajo, el cual ir a cada equipo presentaría una labor innecesaria teniendo como opción realizarlo remoto mediante un Script PowerShell.

Script Powershell

[cmdletbinding()]
param (
 [parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
 [string[]]$ComputerName = $env:computername
) 

begin {}
process {
 foreach ($Computer in $ComputerName) {
 if(Test-Connection -ComputerName $Computer -Count 1 -ea 0) {
 $Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $Computer | ? {$_.IPEnabled}
 foreach ($Network in $Networks) {
 $IPAddress = $Network.IpAddress[0]
 $SubnetMask = $Network.IPSubnet[0]
 $DefaultGateway = $Network.DefaultIPGateway
 $DNSServers = $Network.DNSServerSearchOrder
 $IsDHCPEnabled = $false
 If($network.DHCPEnabled) {
 $IsDHCPEnabled = $true
 }
 $MACAddress = $Network.MACAddress
 $OutputObj = New-Object -Type PSObject
 $OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer.ToUpper()
 $OutputObj | Add-Member -MemberType NoteProperty -Name IPAddress -Value $IPAddress
 $OutputObj | Add-Member -MemberType NoteProperty -Name SubnetMask -Value $SubnetMask
 $OutputObj | Add-Member -MemberType NoteProperty -Name Gateway -Value ($DefaultGateway -join ",")
 $OutputObj | Add-Member -MemberType NoteProperty -Name IsDHCPEnabled -Value $IsDHCPEnabled
 $OutputObj | Add-Member -MemberType NoteProperty -Name DNSServers -Value ($DNSServers -join ",")
 $OutputObj | Add-Member -MemberType NoteProperty -Name MACAddress -Value $MACAddress
 $OutputObj
 }
 }
 elseif (!(Test-Connection -ComputerName $Computer -Count 1 -Quiet)) { 
 Write-Host "$computerName not on network."
 Continue # Move to next computer
 }
 }
} 
end {}

 Instrucciones de Uso

  • Para hacer uso de Powershell debemos tener instalado Windows Management Framework.
  • Copiamos el script anterior, lo pegamos en un notepad y lo guardamos con extensión NombreArchivo.ps1.
  • Ahora crearemos el listado en un archivo TXT (notepad) de todos los equipos de nuestra red o de los equipos que deseamos obtener la información, el archivo debe contener los nombres de los equipos como se muestra en la imagen y guardamos este  [Ver como crear inventario de red automático].
    Ejemplo inventario
    Ejemplo inventario
  • Una vez creados guardamos los archivos en una carpeta de fácil acceso por medio de comando por ejemplo alguna carpeta en el C: en mi caso tengo una carpeta en el C:  llamada Scripts.
  • Ahora abrimos Powershell donde ejecutaremos el script con el siguiente comando [Posible error al ejecutar ver aquí como solucionarlo]:
get-Content C:NombreArchivoListaPCs.txt | C:ScriptsNombreArchivoScript.ps1
  • Si lo queremos exportar a un documento Excel ejecutamos la siguiente linea:
get-Content C:NombreArchivoListaPCs.txt | C:ScriptsNombreArchivoScript.ps1 | Export-csv C:Equipos_IP_FIJA_DINAMICA.csv -notype
  • El cual nos dara la siguiente información.
    Archivo exportado ejemplo
    Archivo exportado ejemplo
  • Donde la columna que nos interesa en este momento es “IsDHCPEnabled” el cual:
    • False = IP Fija
    • True = IP Dinámica
  • En este momento ya hemos obtenido que equipos tienen IP fija y Dinámica.
Te recomendamos  ¿Como saber que programa tiene abierto un archivo?  - Windows