Estoy tratando de escribir un archivo por lotes que necesita ejecutar algunos comandos con una cuenta de administrador local (iniciar / detener un servicio) y algunos comandos con el usuario conectado (copiar archivos del directorio de usuarios) y estoy teniendo problemas. He intentado los siguientes comandos:
runas con / savecred
runas /user:(PC name)\(admin username) /savecred "net stop \"(service name)\""
runas /user:(PC name)\(admin username) /savecred "sc stop \"(service name)\""
Cuando uso /savecred
no se me solicita una contraseña. En cambio, una ventana de símbolo del sistema parpadea brevemente y desaparece. No puedo decir qué hay en esta ventana. El servicio no se detiene.
runas sin / savecred
runas /user:(PC name)\(admin username) "net stop \"(service name)\""
runas /user:(PC name)\(admin username) "sc stop \"(service name)\""
Estos comandos me solicitan una contraseña pero luego muestran el mismo comportamiento que los comandos anteriores: aparece brevemente una ventana de símbolo del sistema y el servicio no se detiene.
Idealmente, me gustaría guardar la contraseña para la sesión, ya que necesitaré ejecutar más comandos con los detalles.
¿Es esto posible y si es así, qué estoy haciendo mal?
fuente
runas /user:(PC name)\(username) /savecred "net stop \"(service name)\"" >> log.txt
no se envía nada al archivo de registro.LOGBATCH.BAT yourbatch.bat any_parameters_your_batch_needs
y creará un archivo de registro que contiene cada comando / acción realizada poryourbatch.bat
Háganos saber lo que ve allí.Respuestas:
Puede agregar lo siguiente a su secuencia de comandos y lo obligará a ejecutarse de forma elevada. No es necesario descargar nada.
fuente
Requesting administrative privileges...
en la pantalla hasta que se agote el tiempo de espera.divide tu archivo por lotes en dos. La parte que desea ejecutar como admincmd pega en system32. La parte que desea ejecutar en cmd normal, péguela en la carpeta normal, y desde aquí llame al segundo archivo por lotes que hay system32. De esta manera, la segunda parte siempre se ejecuta en admincmd. Lo he intentado y funciona para mí.
fuente
Si no le importa el software de terceros, puede intentar ejecutar como contraseña runasspc. Guardará su contraseña en un archivo cifrado. La contraseña no necesita estar expuesta en el archivo por lotes.
fuente
El comando "Runas" no "sudo" su comando.
Para hacer esto desde un archivo por lotes, debe "elevar" los comandos que está generando. Descargue los scripts de Elevate Powertoy.
http://technet.microsoft.com/en-us/magazine/2008.06.elevation.aspx
Lanza tus comandos como:
o
fuente
runas /user:$PcName\$Username /savecred "elevate.cmd sc stop \"$ServiceName\""
,runas /user:$PcName\$Username /savecred "elevate.cmd net stop \"$ServiceName\""
,runas /user:$PcName\$Username /savecred "elevate.cmd net stop $ServiceName"
y cada uno de ellos devuelve este error: ERROR de RUNAS: No se puede ejecutar - net stop elevate.cmd alfrescoTomcat -2147467259: Error no especificadoLo que uso es el siguiente código:
Ponlo después de tu @echo off y comentarios.
fuente
Respuesta simplificada (además del usuario325534) si solo necesita comenzar a trabajar en algún directorio con acceso evevated:
fuente
Este código permite que el cmd solicite la contraseña del usuario. El usuario debe escribir su contraseña y luego
executable.bat
se ejecutará como administradormain.bat
ejecutable.bat
fuente