Pergunta

Eu gostaria de ter um incêndio servidor Windows 2003 um script para disparar outro script em um computador separado do Windows Server 2008.

Foi-me dito que PowerShell pode fazer isso, e isso é bom, mas eu preciso de detalhes mais específicos.

Alguém tem alguma dica para isso?

Obrigado!

Foi útil?

Solução

psexec da SysInternals

Outras dicas

Olhe para a sintaxe do comando AT. Você pode usá-lo para agendar um processo para rodar em uma máquina remota.

O comando AT agenda comandos e programas para rodar em um computador em uma hora e data especificadas. O serviço de agendamento deve ser executado para usar o 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.

maneira mais fácil que é utilização será em duas etapas

a. instalar o cygwin para PC remoto

b. executar hudson ssh @ mcs '/cygdrive/c/path_to_script.bat'

Falando sobre PsExec, eu fortemente sugiro usar Cygwin / OpenSSH vez.

SSH tem várias vantagens (mais ferramentas como PsExec ou serviços, mesmo sob medida).
Por exemplo, tente usar com PsExec e implementar o que estas linhas de comando bash / ssh fazer:

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

Boa sorte!

  • transferências SSH (!) remota stdout / stderr / status de saída para Local shell de inspeção
    (Característica do assassino e exigência comum para integrar a execução remota na lógica de scripts locais)

  • Cygwin / OpenSSH fornece padrão POSIX shell ambiente
    (Investimento de tempo eficiente, ferramentas fundamentais, cross-platform prontos, hábitos compatíveis, etc.)

  • Você pode ainda / sempre correr todos nativos aplicativo do Windows
    (Incluindo a execução automática de arquivos *.bat pelo processador cmd)

  • Você pode configurar autenticação sem senha usando chaves públicas
    (Pense em tarefas automatizadas autônoma)


Dica

Houve uma exigência tive problemas com inicialmente:
serviço de fundo sshd tinha para executar aplicativos em sessão gráfica do usuário
(Na janela de aplicação make aparecem no ambiente de trabalho).

O solução aceitável para mim estava correndo serviço sshd diretamente na GUI do usuário sessão
(Iniciar automaticamente quando o usuário fizer login, siga o link para ver as alterações no arquivo de configuração):

/usr/sbin/sshd -f /home/user/sshd_config

A solução aceita de http://www.experts-exchange.com /OS/Microsoft_Operating_Systems/Q_22959948.html é:

O que eu fornecer foi um script que leva parâmetros ... Neste caso é preciso 4. 1) Server: se você passar -server ele vai só fazem que um servidor 2) Lista: Você pode fornecer um arquivo de lista de servidores. 3) Serviço: Nome do serviço que deseja modificar 4) Verbose: não é utilizado aqui.

Eu tive alguns erros que eu alterado no código a seguir. Usar cortar / colar o código em um arquivo chamado Set-RemoteService.ps1. Tenha certeza de definir o seu executionpolicy para executar scripts de ... ele não vai por padrão. Vocês fazer isso usando a cmdlet set-executionpolicy. PS> Set-ExecutionPolicy "RemoteSigned" para executar o script que você faz PS> C: \ PathToScript \ Set-RemoteService.ps1 -list c: \ ServerList.txt -serviço "DHCP"

######################### Param ($ server, $ list, $ service, [chave] $ detalhado)

if ($ verboso) {$ VerbosePreference = "Continuar"} if ($ list) { foreach ($ SRV no (get-content $ lista)) { $ Query = "Select * from Win32_Service onde Name = '$ service'" $ MyService = get-WmiObject -query $ query -computer $ srv $ MyService.ChangeStartMode ( "Automatic") $ MyService.Start () }} If ($ servidor) { $ Query = "Select * from Win32_Service onde Name = '$ service'" $ MyService = get-WmiObject -query $ query -computer $ server $ MyService.ChangeStartMode ( "Automatic") $ MyService.Start ()}

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top