Me gustaría reiniciar una computadora remota que pertenece a un dominio. Tengo una cuenta de administrador pero no sé cómo usarla desde powershell.
Sé que hay un Restart-Computercmdlet y que puedo pasar la credencial, pero si mi dominio es, por ejemplo mydomain, mi nombre de usuario myusery mi contraseña es mypasswordla sintaxis correcta para usarlo.
Necesito programar el reinicio para no tener que escribir la contraseña.
powershell
powershell-remoting
todos los ojos en mí
fuente
fuente

Respuestas:
El problema
Get-Credentiales que siempre solicitará una contraseña. Sin embargo, hay una forma de evitar esto, pero implica almacenar la contraseña como una cadena segura en el sistema de archivos.El siguiente artículo explica cómo funciona esto:
En resumen, crea un archivo para almacenar su contraseña (como una cadena encriptada). La siguiente línea solicitará una contraseña y luego la almacenará
c:\mysecurestring.txtcomo una cadena encriptada. Sólo necesitas hacer esto una vez:Siempre que vea un
-Credentialargumento en un comando de PowerShell, significa que puede pasar unPSCredential. Entonces en tu caso:Es posible que necesite un
-Authenticationvalor de cambio diferente porque no conozco su entorno.fuente
ConvertTo-SecureString "password" -AsPlainText -Force.$password = ConvertTo-SecureString "password" -AsPlainText -ForceHay otra forma, pero ...
NO HAGA ESTO SI NO DESEA SU CONTRASEÑA EN EL ARCHIVO DE ESCRITURAS (No es una buena idea almacenar contraseñas en scripts, pero a algunos de nosotros nos gusta saber cómo hacerlo).
Ok, esa fue la advertencia, aquí está el código:
$credtendrá las credenciales de John Doe con la contraseña "ABCDEF".Medios alternativos para obtener la contraseña lista para usar:
fuente
Con respecto al almacenamiento de credenciales, utilizo dos funciones (que normalmente están en un módulo que se carga desde mi perfil):
Y éste:
Lo usas así:
Si el archivo de credenciales no existe, se le solicitará la primera vez, en ese momento almacenará las credenciales en una cadena encriptada dentro de un archivo XML. La segunda vez que ejecuta esa línea, el archivo xmlfile está allí y se abrirá automáticamente.
fuente
Tengo que ejecutar las funciones de SCOM 2012 desde un servidor remoto que requiere una credencial diferente. Evito las contraseñas de texto claro al pasar la salida de una función de descifrado de contraseña como entrada a ConvertTo-SecureString. Para mayor claridad, esto no se muestra aquí.
Me gusta escribir fuertemente mis declaraciones. La declaración de tipo para $ strPass funciona correctamente.
fuente
Aquí hay dos formas de hacerlo, si está programando el reinicio.
Primero, puede crear una tarea en una máquina utilizando credenciales que tengan los derechos necesarios para conectarse y reiniciar otra máquina. Esto hace que el planificador sea responsable de almacenar de forma segura las credenciales. El comando de reinicio (soy un chico de Powershell, pero esto es más limpio) es:
SHUTDOWN /r /f /m \\ComputerNameLa línea de comando para crear una tarea programada en la máquina local, para reiniciar remotamente otra, sería:
SCHTASKS /Create /TN "Reboot Server" /TR "shutdown.exe /r /f /m \\ComputerName" /SC ONCE /ST 00:00 /SD "12/24/2012" /RU "domain\username" /RP "password"Prefiero la segunda forma, donde usa sus credenciales actuales para crear una tarea programada que se ejecuta con la cuenta del sistema en una máquina remota.
SCHTASKS /Create /TN "Reboot Server" /TR "shutdown.exe /r /f" /SC ONCE /ST 00:00 /SD "12/24/2012" /RU SYSTEM /S ComputerNameEsto también funciona a través de la GUI, solo ingrese SYSTEM como nombre de usuario, dejando en blanco los campos de contraseña.
fuente
Tenga mucho cuidado al almacenar contraseñas de esta manera ... no es tan seguro como ...
fuente
Vi un ejemplo que usa Import / Export-CLIXML.
Estos son mis comandos favoritos para el problema que intenta resolver. Y la forma más sencilla de usarlos es.
Entonces, si el archivo no existe localmente, solicitará las credenciales y las almacenará. Esto tomará un
[pscredential]objeto sin problemas y ocultará las credenciales como una cadena segura.Finalmente, solo use la credencial como lo hace normalmente.
Nota sobre seguridad :
Almacenar credenciales de forma segura en el disco
Editar: solo vuelva a leer la pregunta original. Lo anterior funcionará siempre que haya inicializado
[pscredential]en el disco duro. Es decir, si coloca eso en su secuencia de comandos y ejecuta la secuencia de comandos una vez que creará ese archivo y luego ejecutar la secuencia de comandos desatendida será simple.fuente
Solución
Para máquinas de compilación
En el código anterior, reemplace los valores de nombre de usuario y contraseña por variables de entorno secretas ("ocultas de los registros") de su máquina de compilación
Resultados de la prueba por
y verás
fuente
¿Por qué no pruebas algo muy simple?
use psexec con el comando 'shutdown / r / f / t 0' y una lista de PC de CMD.
fuente