PoweShell IV de V

Los anteriores artículos de esta serie los podéis leer en:



De nuevo con otra entrega de la serie de artículos dedicados a PowerShell en Windows Vista.


En esta ocasión os voy a comentar cómo podemos realizar un par de tareas prácticas que cualquier administrador hace habitualmente, con PowerShell como son la administración de usuarios y grupos locales y la administración de dispositivos de red.


Administración de usuarios locales:


Si queremos listar los usuarios y grupos de nuestro equipo, necesitaremos hacer una consulta a la clase correspondiente de la Instrumentación del Sistema (WMI), para ello utilizaremos el cmdlet get-wmiobject y escribiremos lo siguiente:




  • Get-WmiObject win32_Useraccount -ComputerName localhost

El en resultado probablemente aparezcan todas las cuentas que están creadas en el equipo, incluidas las de sistema, por lo tanto vamos a filtrar los resultados por el parámetro .localAccount, es decir, que solo se incluyan aquellas cuentas definidas como locales.




  • Get-WmiObject win32_Useraccount -ComputerName localhost | where {$_.LocalAccount}

De igual forma, para listar los grupos, haremos una consulta a la clase win32_Group, escribiendo lo siguiente:




  • Get-WmiObject win32_Group -ComputerName localhost

Pero, ¿qué debemos hacer para crear un nuevo usuario o grupo con PowerShell? La creación de cuentas no es un proceso tan directo como la obtención de información, ya que debemos aportar datos como el nombre, contraseña, etc.


Para poder crear una cuenta local debemos conectarnos con el servicio ADSI local y posteriormente crear un objeto de tipo “User” con los parámetros que se requieran. Trabajaremos con una variable $conn que establecerá la conexión a ADSI y otra variable $user que almacenará el objeto a crear. Finalmente, guardamos las propiedades con SetInfo().



$conn=[ADSI]»WinNT://localhost»
$user = $conn.Create(«user»,»TestUser»)
$user.SetPassword(«Passw0rd»)
$user.SetInfo()


Al igual que antes, para crear un grupo nuevo, solo cambiamos el tipo de objeto y eliminamos la línea de contraseña, ya que no se requiere. Por lo tanto escribiremos lo siguiente en la consola de PowerShell:



$conn=[ADSI]»WinNT://localhost»
$group = $conn.Create(«group»,»GrupoTest»)
$group.setinfo()


Administración de dispositivos de red:


Si queremos listar los dispositivos de red que tenemos, lo podemos hacer apoyándonos en la integración de PowerShell con .Net Framework. En este caso llamaremos a la función correspondiente en .Net




  • [System.Net.NetworkInformation.NetworkInterface]::GetAllNetworkInterfaces()

Claramente se observa cómo hacemos una llamada a la función GetAllNetworkInterfaces (), la cual forma parte del namespace System.NET.NetworkInterface.


Igualmente podemos extraer la información de los dispositivos de red, haciendo una consulta WMI:




  • Get-WMIObject Win32_NetworkAdapter

Aunque si queremos únicamente aquellas que están conectadas, podemos hacerlo con un filtro por velocidad.




  • Get-WMIObject win32_NetworkAdapter | where {$_.speed -gt 0}


¿Cómo establecemos la configuración IP de un dispositivo con PowerShell? Para ello debemos hacer un pequeño script:



$NIC = Get-WMIObject Win32_NetworkAdapterConfiguration | where {$_.Index -eq “12”}
$NIC.IPAddress = «192.168.0.150»
$NIC.DefaultIPGateway = «192.168.0.1»
$NIC.DHCPEnabled = $false
$NIC.DNSServerSearchOrder = «192.168.0.1, 192.168.0.2»


En este último ejemplo, el Index 12 corresponde en mi lista al dispositivo de bucle invertido. Debemos hacer un filtro para configurar únicamente el dispositivo que queremos. Si no sabeis el índice del dispositivo, lo podéis extraer con una simple consulta:




  • Get-WMIObject Win32_NetworkAdapterConfiguration

Como podéis observar, la potencia de Powershell se extiende mucho más allá de las fronteras del sistema de archivos y el registro. Podemos interactuar directamente con funciones de .Net Framework y con clases de la Instrumentación del Sistema (WMI), todo con un mismo entorno que es válido tanto para administradores como para desarrolladores.


Hasta el próximo post

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *