¿Cómo puedo remotamente ejecutar una secuencia de comandos en Windows?
-
21-08-2019 - |
Pregunta
Me gustaría tener un Windows 2003 server fuego una secuencia de comandos para disparar otra secuencia de comandos por separado, en un equipo con Windows Server 2008.
Me han dicho que Powershell puede hacer, y eso está bien, pero necesito más detalles específicos.
¿Alguien tiene algún consejo para esto?
Gracias!
Solución
psexec de SysInternals
Otros consejos
Mira en la sintaxis para el comando AT. Se puede utilizar para programar un proceso para ejecutarse en una máquina remota.
Las programa comandos y programas de comandos AT que se ejecutan en una computadora en una hora y fecha especificada. El servicio de programación debe estar en ejecución para usar el comando AT.
AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] "command"
\\computername Specifies a remote computer. Commands are scheduled on the
local computer if this parameter is omitted.
id Is an identification number assigned to a scheduled
command.
/delete Cancels a scheduled command. If id is omitted, all the
scheduled commands on the computer are canceled.
/yes Used with cancel all jobs command when no further
confirmation is desired.
time Specifies the time when command is to run.
/interactive Allows the job to interact with the desktop of the user
who is logged on at the time the job runs.
/every:date[,...] Runs the command on each specified day(s) of the week or
month. If date is omitted, the current day of the month
is assumed.
/next:date[,...] Runs the specified command on the next occurrence of the
day (for example, next Thursday). If date is omitted, the
current day of the month is assumed.
"command" Is the Windows NT command, or batch program to be run.
forma más fácil es que el uso será en dos pasos
a. instalar cygwin con un ordenador remoto
b. Hudson ejecutar ssh @ mcs '/cygdrive/c/path_to_script.bat'
Hablando de PsExec
, Me gustaría fuertemente sugiero usar Cygwin/OpenSSH en su lugar.
SSH tiene múltiples ventajas (más de herramientas como PsExec
o incluso por encargo de los servicios).
Por ejemplo, pruebe a utilizar con PsExec
y aplicar lo que estas bash
/ ssh
las líneas de comandos de hacer:
ssh user@remotehost "find . -name something" 2> all.errors.txt
ssh user@remotehost "grep -r something ."
if [ "$?" == "0" ]
then
echo "FOUND"
else
echo "NOT FOUND"
fi
Buena Suerte!
SSH transferencias (!) remoto stdout / stderr / estado de salida para local shell para la inspección
(killer característica y requisito común para integrar la ejecución remota en la lógica de la escritura local)Cygwin/OpenSSH proporciona estándar POSIX medio ambiente
(eficiente inversión de tiempo, herramientas fundamentales, de la cruz-plataforma de listo, compatible hábitos, etc.)Usted todavía puede/ejecutar siempre todos los nativos Aplicación de Windows
(incluyendo la ejecución automática de los*.bat
archivos porcmd
procesador)Usted puede configurar una contraseña de menos de auth uso de claves públicas
(piensa en desatendida tareas automatizadas)
Punta
No era una exigencia tuve problemas con un principio:
de fondo sshd
el servicio tenía que ejecutar apps de usuario con sesión gráfica
(para hacer que la ventana de la aplicación aparecen en el entorno de escritorio).
El solución aceptable para mí fue corriendo sshd
servicio directamente de usuario la interfaz gráfica de usuario de la sesión
(se inicia automáticamente cuando el usuario inicia la sesión, siga el enlace para ver los cambios del archivo de configuración):
/usr/sbin/sshd -f /home/user/sshd_config
La solución aceptada de http://www.experts-exchange.com /OS/Microsoft_Operating_Systems/Q_22959948.html es:
Lo que proporciono era un guión que toma parámetros ... En este caso se necesita 4. 1) Servidor: si pasa -server lo hará Sólo hace que un servidor 2) lista: Usted puede proporcionar un archivo de lista de servidores. 3) Servicio: Nombre del servicio que querer modificar 4) detallado: no es usada aquí.
Yo tenía algunos errores que he cambiado en el código siguiente. Usar cortar / pegar el código en un archivo llamado Set-RemoteService.ps1. Asegurate que establecer su executionpolicy para funcionar scripts ... no lo hará por defecto. Tú hacerlo mediante el uso de la set-executionpolicy cmdlet. PS> Set-executionpolicy "RemoteSigned" a ejecutar el script que hace PS> C: \ PathToScript \ Set-RemoteService.ps1 -lista c: \ serverlist.txt -service "DHCP"
######################### Param ($ servidor, la lista $, $ servicio, [Interruptor] $ detallado)if ($ detallado) {$ = VerbosePreference "Continuar"} if ($ lista) { foreach ($ SRV en (lista get-content $)) { $ Consulta = "SELECT * FROM Win32_Service donde nombre = '$ servicio'" $ MyService = get-WmiObject -query $ consulta -computer $ srv $ MyService.ChangeStartMode ( "Automático") $ MyService.Start () }} If ($ servidor) { $ Consulta = "SELECT * FROM Win32_Service donde nombre = '$ servicio'" $ MyService = get-WmiObject -query $ consulta de servidor -computer $ $ MyService.ChangeStartMode ( "Automático") $ MyService.Start ()}