Compartir a través de


Realización de tareas de red

Este ejemplo solo se aplica a las plataformas Windows.

Dado que TCP/IP es el protocolo de red más usado, la mayoría de las tareas de administración de protocolos de red de bajo nivel implican TCP/IP. En esta sección, usamos PowerShell y WMI para realizar estas tareas.

Enumeración de direcciones IP para un equipo

Para obtener todas las direcciones IP en uso en el equipo local, use el siguiente comando:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Select-Object -ExpandProperty IPAddress

Dado que la propiedad IPAddress de un objeto Win32_NetworkAdapterConfiguration es una matriz, debe usar el parámetro ExpandProperty de Select-Object para ver toda la lista de direcciones.

10.0.0.1
fe80::60ea:29a7:a233:7cb7
2601:600:a27f:a470:f532:6451:5630:ec8b
2601:600:a27f:a470:e167:477d:6c5c:342d
2601:600:a27f:a470:b021:7f0d:eab9:6299
2601:600:a27f:a470:a40e:ebce:1a8c:a2f3
2601:600:a27f:a470:613c:12a2:e0e0:bd89
2601:600:a27f:a470:444f:17ec:b463:7edd
2601:600:a27f:a470:10fd:7063:28e9:c9f3
2601:600:a27f:a470:60ea:29a7:a233:7cb7
2601:600:a27f:a470::2ec1

Con el cmdlet Get-Member, puede ver que la propiedad IPAddress es una matriz:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Get-Member -Name IPAddress
   TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_NetworkAdapterConfiguration

Name      MemberType Definition
----      ---------- ----------
IPAddress Property   string[] IPAddress {get;}

La propiedad IPAddress para cada adaptador de red es realmente una matriz. Las llaves de la definición indican que IPAddress no es un valor de System.String, sino una matriz de valores de System.String.

Enumeración de datos de configuración de IP

Para mostrar datos detallados de configuración de IP para cada adaptador de red, use el siguiente comando:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true

La pantalla predeterminada para el objeto de configuración del adaptador de red es un conjunto muy reducido de la información disponible. Para la inspección detallada y la solución de problemas, use Select-Object o un cmdlet de formato, como Format-List, para especificar las propiedades que se van a mostrar.

En las redes TCP/IP modernas, probablemente no le interesen las propiedades IPX o WINS. Puede usar el parámetro ExcludeProperty de Select-Object para ocultar propiedades con nombres que comiencen por "WINS" o "IPX".

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true |
    Select-Object -ExcludeProperty IPX*,WINS*

Este comando devuelve información detallada sobre DHCP, DNS, enrutamiento y otras propiedades de configuración ip secundarias.

Realizar ping a los ordenadores

Puede realizar un ping simple en un equipo mediante Win32_PingStatus. El siguiente comando realiza el ping, pero devuelve una salida larga:

Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"

La respuesta de Win32_PingStatus contiene 29 propiedades. Puede usar Format-Table para seleccionar las propiedades más interesantes para usted. El parámetro Autoize de Format-Table cambia el tamaño de las columnas de la tabla para que se muestren correctamente en PowerShell.

Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'" |
    Format-Table -Property Address,ResponseTime,StatusCode -Autosize
Address   ResponseTime StatusCode
-------   ------------ ----------
127.0.0.1            0          0

Un statusCode de 0 indica un ping correcto.

Puede usar una matriz para hacer ping a varios equipos con un solo comando. Dado que hay más de una dirección, use el ForEach-Object para hacer ping a cada dirección por separado:

'127.0.0.1','localhost','bing.com' |
  ForEach-Object -Process {
    Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
      Select-Object -Property Address,ResponseTime,StatusCode
  }

Puede usar el mismo formato de comando para hacer ping a todas las direcciones de una subred, como una red privada que use el número de red 192.168.1.0 y una máscara de subred de clase C estándar (255.255.255.0)., Solo las direcciones del intervalo de 192.168.1.1 a 192.168.1.254 son direcciones locales legítimas (0 siempre está reservada para el número de red y 255 es una dirección de difusión de subred).

Para representar una matriz de los números de 1 a 254 en PowerShell, use la expresión 1..254. Se puede realizar un ping de subred completo agregando cada valor del intervalo a una dirección parcial en la instrucción ping:

1..254| ForEach-Object -Process {
  Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_'") } |
    Select-Object -Property Address,ResponseTime,StatusCode

Tenga en cuenta que esta técnica para generar un intervalo de direcciones también se puede usar en otro lugar. Puede generar un conjunto completo de direcciones de esta manera:

$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}

Recuperación de propiedades del adaptador de red

Anteriormente, hemos mencionado que podría recuperar propiedades de configuración generales mediante la clase Win32_NetworkAdapterConfiguration. Aunque no es estrictamente tcp/IP, la información del adaptador de red, como direcciones MAC y tipos de adaptadores, puede ser útil para comprender lo que sucede con un equipo. Para obtener un resumen de esta información, use el siguiente comando:

Get-CimInstance -Class Win32_NetworkAdapter -ComputerName .

Asignación del dominio DNS para un adaptador de red

Para asignar el dominio DNS para la resolución automática de nombres, use el método SetDNSDomain del Win32_NetworkAdapterConfiguration. El parámetro Query de Invoke-CimMethod toma una cadena de consulta WQL. El cmdlet llama al método especificado en cada instancia devuelta por la consulta.

$wql = 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True'
$args = @{ DnsDomain = 'fabrikam.com'}
Invoke-CimMethod -MethodName SetDNSDomain -Arguments $args -Query $wql

El filtrado en IPEnabled=True es necesario, ya que incluso en una red que usa solo TCP/IP, varias de las configuraciones del adaptador de red de un equipo no son adaptadores TCP/IP verdaderos. son elementos de software generales que admiten RAS, VPN, QoS y otros servicios para todos los adaptadores y, por lo tanto, no tienen una dirección propia.

Realización de tareas de configuración de DHCP

La modificación de los detalles de DHCP implica trabajar con un conjunto de adaptadores de red, al igual que lo hace la configuración de DNS. Hay varias acciones distintas que puede realizar mediante WMI.

Búsqueda de adaptadores habilitados para DHCP

Para buscar los adaptadores habilitados para DHCP en un equipo, use el siguiente comando:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=$true"

Para excluir adaptadores con problemas de configuración de IP, solo puede recuperar adaptadores habilitados para IP:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true"

Recuperación de propiedades DHCP

Dado que las propiedades relacionadas con DHCP para un adaptador suelen comenzar con DHCP, puede usar el parámetro Property de Format-Table para mostrar solo esas propiedades:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter  "IPEnabled=$true and DHCPEnabled=$true" |
  Format-Table -Property DHCP*

Habilitación de DHCP en cada adaptador

Para habilitar DHCP en todos los adaptadores, use el siguiente comando:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE IPEnabled=True and DHCPEnabled=False'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql

El uso de la instrucción filter IPEnabled=True and DHCPEnabled=False evita habilitar DHCP donde ya está habilitado.

Liberar y renovar concesiones DHCP en adaptadores específicos

Las instancias de la clase Win32_NetworkAdapterConfiguration tienen métodos ReleaseDHCPLease y RenewDHCPLease. Ambos se usan de la misma manera. En general, use estos métodos si solo necesita liberar o renovar direcciones para un adaptador en una subred específica. La manera más fácil de filtrar adaptadores en una subred es elegir solo las configuraciones de adaptador que usan la puerta de enlace para esa subred. Por ejemplo, el siguiente comando libera todas las concesiones DHCP en adaptadores del equipo local que obtienen concesiones DHCP de 192.168.1.254:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName ReleaseDHCPLease -Query $wql

El único cambio para renovar una concesión DHCP es usar el método RenewDHCPLease en lugar del método ReleaseDHCPLease:

$wql = 'SELECT * from Win32_NetworkAdapterConfiguration WHERE DHCPServer="192.168.1.1"'
Invoke-CimMethod -MethodName RenewDHCPLease -Query $wql

Nota

Al usar estos métodos en un equipo remoto, tenga en cuenta que puede perder el acceso al sistema remoto si está conectado a él a través del adaptador con la concesión liberada o renovada.

Liberar y renovar concesiones DHCP en todos los adaptadores

Puede realizar versiones o renovaciones globales de direcciones DHCP en todos los adaptadores mediante los métodos Win32_NetworkAdapterConfiguration, ReleaseDHCPLeaseAll y RenewDHCPLeaseAll. Sin embargo, el comando debe aplicarse a la clase WMI, en lugar de a un adaptador determinado, ya que la liberación y renovación de concesiones globalmente se realiza en la clase , no en un adaptador específico. El cmdlet Invoke-CimMethod puede llamar a los métodos de una clase .

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName ReleaseDHCPLeaseAll

Puede usar el mismo formato de comando para invocar el método RenewDHCPLeaseAll:

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll

Creación de un recurso compartido de red

Para crear un recurso compartido de red, use el método Create de Win32_Share:

Invoke-CimMethod -ClassName Win32_Share -MethodName Create -Arguments @{
    Path = 'C:\temp'
    Name = 'TempShare'
    Type = [uint32]0 #Disk Drive
    MaximumAllowed = [uint32]25
    Description = 'test share of the temp folder'
}

Esto equivale al siguiente comando net share en Windows:

net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"

Para llamar a un método de una clase WMI que toma parámetros, debe saber qué parámetros están disponibles y los tipos de esos parámetros. Por ejemplo, puede enumerar los métodos del Win32_Class con los siguientes comandos:

(Get-CimClass -ClassName Win32_Share).CimClassMethods
Name          ReturnType Parameters                                   Qualifiers
----          ---------- ----------                                   ----------
Create            UInt32 {Access, Description, MaximumAllowed, Name…} {Constructor, Implemented, MappingStrings, Stati…
SetShareInfo      UInt32 {Access, Description, MaximumAllowed}        {Implemented, MappingStrings}
GetAccessMask     UInt32 {}                                           {Implemented, MappingStrings}
Delete            UInt32 {}                                           {Destructor, Implemented, MappingStrings}

Use el siguiente comando para enumerar los parámetros del método Create.

(Get-CimClass -ClassName Win32_Share).CimClassMethods['Create'].Parameters
Name            CimType Qualifiers                                  ReferenceClassName
----            ------- ----------                                  ------------------
Access         Instance {EmbeddedInstance, ID, In, MappingStrings…}
Description      String {ID, In, MappingStrings, Optional}
MaximumAllowed   UInt32 {ID, In, MappingStrings, Optional}
Name             String {ID, In, MappingStrings}
Password         String {ID, In, MappingStrings, Optional}
Path             String {ID, In, MappingStrings}
Type             UInt32 {ID, In, MappingStrings}

También puede leer la documentación del método Create de la clase Win32_Share.

Eliminación de un recurso compartido de red

Puede quitar un recurso compartido de red con Win32_Share, pero el proceso es ligeramente diferente de la creación de un recurso compartido, ya que debe recuperar la instancia específica que se va a quitar, en lugar de la clase Win32_Share. En el ejemplo siguiente se elimina el recurso compartido TempShare:

$wql = 'SELECT * from Win32_Share WHERE Name="TempShare"'
Invoke-CimMethod -MethodName Delete -Query $wql

Conexión de una unidad de red accesible para Windows

El cmdlet New-PSDrive puede crear una unidad de PowerShell asignada a un recurso compartido de red.

New-PSDrive -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"

Sin embargo, las unidades creadas de esta manera solo están disponibles para la sesión de PowerShell donde se crean. Para asignar una unidad que sea accesible fuera de PowerShell (o en otras sesiones de PowerShell), debe usar el parámetro Persist.

New-PSDrive -Persist -Name "X" -PSProvider "FileSystem" -Root "\\Server01\Public"

Nota

Es posible que las unidades asignadas de forma persistente no estén disponibles al ejecutarse en un contexto con privilegios elevados. Este es el comportamiento predeterminado de UAC de Windows. Para obtener más información, consulte el siguiente artículo: