Uso de PowerShell a través de MMC para ejecutar comandos CMD de nivel de administrador

Uso de PowerShell a través de MMC para ejecutar comandos CMD de nivel de administrador

Soy nuevo en PowerShell. Quiero hacer algo como esto al apagar antes de apagar la computadora. Planeo que Windows MMC/Editor de políticas de grupo local lo haga con un script de PowerShell.

cmd as admin
echo "SOME COMMAND"
echo "exit"

Básicamente, después de activar el evento de apagado o reinicio debería:

  1. Abra CMD como administrador (y seleccione automáticamente ¿Sí en UAC?).

  2. Ejecute ALGÚN COMANDO (habrá muchos).

  3. Cierre CMD y luego permita que Windows 10 se apague/reinicie.

Ahora sé cómo hacer que MMC agregue un script de PowerShell para ejecutarlo antes de que se complete el comando de apagado. Sólo necesito conocer la sintaxis sobre cómo realizar los tres pasos anteriores.

Sin embargo, para ser claro:

Mi punto principal es poder abrir CMD como administrador, escribir un comando y luego salir de CMD. PowerShell normalmente no ejecuta correctamente algunos comandos particulares como administrador, pero CMD sí. De esa manera, PowerShell en sí no necesita privilegios de administrador, solo la ejecución temporal de CMD.

No me importa hacer clic en SÍ en un UAC, cuando sea necesario, porque creo que si llega el momento, probablemente pueda usar sendkeys {TAB}{TAB}{ENTER}o algo así. Lo que parece que no puedo encontrar en Internet es cómo iniciar un script de PowerShell para poder guardarlo. Sin embargo, veo muchas claves de envío en la sintaxis. En bash en Linux, es simple: #!/bin/bashy listo, insta-bash, pero Windows parece tener problemas de graves en este sentido.

Si hay una mejor manera de hacer esto que CMD > Echo "cosas" > salir de CMD, hágamelo saber. Sé qué cosas quiero escribir en cada "cosa" de Echo (o más bien, enviar claves, si termino usando eso), pero no sé cómo abrir CMD como administrador.

Gracias.

Respuesta1

Realmente no entiendo lo que buscas.

Sin embargo, el objetivo de PowerShell no es una herramienta de automatización GUI. Puedes hacer algo de eso usando SendKeys, tal como lo harías a través de VBScript.

Sin embargo, dado que es nuevo, es vital que se ponga al día con PowerShell para asegurarse de que realmente lo comprende y sabe cuándo y por qué usarlo. Vaya a YouTube, busque 'Beginning PowerShell' y realice una búsqueda web de PowerShell usando SendKeys ---ejemplo---

En cuanto a su caso de uso:

Básicamente, después de activar el evento de apagado o reinicio debería:

  1. Abra CMD como administrador (y seleccione automáticamente ¿Sí en UAC?).

Iniciar PowerShell es un símbolo del sistema de PowerShell. No es necesario abrir cmd.exe para usarlo. PowerShell puede reemplazar todo lo que hace cmd.exe. Aceptar UAC solo es necesario si está intentando ejecutar un comando elevado. PowerShell no omitirá UAC porque debe proporcionar credenciales de administrador. Windows requiere eso.

  1. Ejecute ALGÚN COMANDO (habrá muchos).

Simplemente cree un script con los comandos que desee.

  1. Cierre CMD y luego permita que Windows 10 se apague/reinicie.

PowerShell se cerrará de forma predeterminada una vez que finalice el script. A menos que usted le indique específicamente que no lo haga.

Lo que parece querer tener son scripts de cierre de sesión e inicio de sesión. Es cuestión de escribirlos y agregarlos al grupo de inicio/cierre de sesión o a la configuración de la política de la máquina local.

Utilice PowerShell y la política de grupo para su secuencia de comandos de inicio de sesión

Uso de la política de grupo para implementar una secuencia de comandos de inicio de sesión de Windows PowerShell

*Actualización basada en los seguimientos de los anuncios a continuación *

Lo que parece querer tener son scripts de cierre de sesión e inicio de sesión. Es cuestión de escribirlos y agregarlos al grupo de inicio/cierre de sesión o a la configuración de la política de la máquina local. Puede configurar las mismas cosas para el apagado. Recuerde que un reinicio provocará una acción de inicio de sesión. También tiene un marco político. La consola PowerShell ejecutará cualquier comando que pueda ejecutar cmd.exe. Tienes que llamarlos correctamente. Si UAC es un problema, desactívelo por completo. Aunque eso significa que, al hacerlo, acepta todos los riesgos de seguridad.

Aceptar UAC solo es necesario si está intentando ejecutar un comando elevado. PowerShell no omitirá UAC porque debe proporcionar credenciales de administrador. Windows requiere eso.

Para eso está Start-Process -Verb RunAs y tiene un cambio de credenciales, pero aún así debe proporcionarlo. Entonces, todavía te avisan. Puede guardar créditos en un archivo seguro para reutilizarlos, pero debe hacerlo antes de ejecutar cualquier script.

Puede intentar lo siguiente bajo su propia responsabilidad.

https://docs.microsoft.com/en-us/previous-versions/technet-magazine/cc162321(v=msdn.10)

https://github.com/sushihangover/SushiHangover-PowerShell/tree/master/modules/PSUserTools

(específicamente el script llamado Start-ProcessAsAdministrator.ps1)

información relacionada