Búsqueda de sitios web

Reinicie todas las computadoras del dominio usando PowerShell


En este artículo muestro cómo forzar el reinicio de todas las computadoras del dominio usando el comando Restart-Computer.

Preparación

Enumere todos los nombres de computadoras por unidad organizacional

Primero, necesito una lista de todas las computadoras del dominio. En un entorno limpio, todas las computadoras del dominio se almacenan en una unidad organizativa separada. Si este es el caso, entonces se puede recuperar allí la lista de todos los ordenadores.


(Get-ADComputer -Filter * -SearchBase "OU=Workstations,DC=pagr,DC=inet").Name | Out-File c:\Temp\computers.txt

Los nombres de las computadoras se almacenan en un archivo. También puedes usar una variable.

Enumere todos los nombres de computadoras por atributo

Como ya se mencionó, los ambientes ordenados son raros. Las computadoras del dominio pueden estar en algún lugar, hay un tohuwabohu (un consejo importante: computadoras contenedoras). Luego puedes buscarlos usando el atributo del sistema operativo para capturarlos todos. Todas las computadoras cliente, pero ningún servidor.


(Get-ADComputer -Filter 'operatingsystem -notlike "*server*"').Name | Out-File C:\Temp\computers.txt

El cortafuegos: WMI entrante

La regla de firewall entrante WMI debe estar habilitada en todas las computadoras del dominio. Esto se puede hacer manualmente o mediante políticas de grupo.

Reiniciar en acción

Recomiendo a todos los lectores que se detengan ahora y se pregunten: "¿Realmente quieren reiniciar todas esas computadoras?" ? Controla atentamente la lista de ordenadores. Ahora todas las computadoras se reinician. Los archivos abiertos no se guardan y el usuario cierra la sesión. Esto podría resultar desagradable si detecta el error.


Restart-Computer -ComputerName (Get-Content C:\Temp\computers.txt) -Force -ErrorAction SilentlyContinue -ErrorVariable NoRestart

El parámetro -Force fuerza un reinicio incluso cuando los usuarios han iniciado sesión. El parámetro -ErrorAction no muestra ningún error (las computadoras en la base de datos pueden estar fuera de línea). El parámetro -ErrorVariable almacena errores en la variable NoRestart.

Errores

Después de completar, puede ver que no se puede acceder a mi máquina client01. Esta información se almacena en la variable NoRestart.

La lista de computadoras que no se han reiniciado se guardará por nombre de computadora. Para verificar, ejecute el siguiente comando para recuperar todas las computadoras "Sin reinicio" por nombre de computadora y guardarlas en un archivo.


$NoRestart.targetobject | Out-File C:\Temp\NoRestart.txt

Conclusión

Este enfoque no reemplaza una solución empresarial como SCCM. Pero para aquellos que no pueden utilizar una solución empresarial, este artículo puede resultar útil para reiniciar todas las computadoras con una sola línea en PowerShell.

Para forzar una actualización de gp en todas las computadoras del dominio, consulte mi artículo: PowerShell: Forzar gpupdate en todas las computadoras del dominio

Para documentar su entorno, consulte: PowerShell: documentar su entorno ejecutando systeminfo en todos los equipos del dominio.

Artículos relacionados