2009-05-14 15 views
9

Chciałbym, aby serwer Windows 2003 uruchamiał skrypt uruchamiający inny skrypt na osobnym komputerze z systemem Windows Server 2008.Jak zdalnie wykonać skrypt w systemie Windows?

Powiedziano mi, że Powershell może to zrobić, i to w porządku, ale potrzebuję więcej szczegółowych informacji.

Czy ktoś ma jakieś wskazówki na ten temat?

Dzięki!

+0

To pytanie prawdopodobnie lepiej pasuje do serverfault.com. Z tego powodu zamknąłem oznaczenie; Stackoverflow obsługuje teraz poruszające się pytania między stronami. –

Odpowiedz

14

psexec z SysInternals

+0

To wydaje się najlepszą odpowiedzią. Spróbuję tego jutro w pracy. –

0

przyjętego rozwiązania z http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Q_22959948.html jest:

Co mogę dostarczyć był skrypt, który wykonuje parametry ... W tym przypadku potrzebny) Serwer 4. 1: jeśli przejdą -server to będzie rób to tylko jeden serwer 2) List: Ty może dostarczyć plik listy serwerów. 3) Usługa: Nazwa usługi, którą chcesz chcesz zmodyfikować 4) Dokładnie: nie jest to użyte tutaj.

Miałem kilka błędów, które zmieniłem w w następującym kodzie. Aby użyć , wytnij/wklej kod do pliku o nazwie Set-RemoteService.ps1. Upewnij się, że ustawi pole wykonawcze, aby uruchamiać skrypty ... nie będzie domyślnie. Wykonaj to za pomocą polecenia cmdlet set-executionpolicy zestawu . PS> Set-ExecutionPolicy "RemoteSigned" do uruchomić skrypt zrobić PS> C: \ PathToScript \ Set-RemoteService.ps1 -list c: \ ServerList.txt -service "DHCP"

#### ##################### Param ($ server, $ list, $ service, [switch] $ verbose)

if ($ Verbose) {$ VerbosePreference = "Dalej"} if ($ list) { foreach ($ srv w (get-content $ list)) { $ query = "Wybierz * od Win32_Service gdzie Name = '$ service" " $ myService = get- WmiObject -query $ query -computer $ srv $ myService.ChangeStartMode ("Automatic") $ myService.Start() }} if ($ server) { $ query = "Wybierz * od Win32_Service gdzie Name = '$ service" " $ myService = get-WmiObject -query $ query -computer $ server $ myService.ChangeStartMode ("Automatic") $ myService.Start()}

+0

Ten skrypt uruchamia istniejące usługi na komputerze zdalnym, ale nie uruchamia dowolnych skryptów. –

6

zajrzeć do składni komendy AT. Za jego pomocą można zaplanować uruchamianie procesu na zdalnym komputerze.

Polecenie AT planuje polecenia i programy uruchamiane na komputerze o o określonej godzinie i dacie. Usługa Harmonogram musi być uruchomiona, aby użyć komendy AT z poleceniem .

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. 
1

Mówiąc o PsExec, chciałbym silnie Proponuję użyć Cygwin/OpenSSH zamiast.

SSH ma wiele zalet (ponad narzędziami takimi jak PsExec lub nawet niestandardowe usługi).
Na przykład, spróbuj użyć z PsExec i wdrożyć co te bash/ssh linii poleceń:

ssh [email protected] "find . -name something" 2> all.errors.txt 
ssh [email protected] "grep -r something ." 
if [ "$?" == "0" ] 
then 
    echo "FOUND" 
else 
    echo "NOT FOUND" 
fi 

powodzenia!

  • transfery SSH (!) Status zdalnego stdout/stderr/Zakończ, aby lokalnej powłoki dla inspekcji
    (cecha zabójca i wspólnego wymogu zintegrować zdalne wykonanie do logiki skryptów lokalnych)

  • Cygwin/OpenSSH zapewnia standard środowisko powłoki POSIX
    (efektywna inwestycja czasowa, podstawowe narzędzia, gotowe do pracy na różnych platformach, zgodne zwyczaje itp.)

  • Można nadal/zawsze uruchamiane wszyscy rodzimy aplikacji Windows
    (w tym automatyczne wykonanie *.bat plików przez cmd procesora)

  • można skonfigurować hasło mniej uwierzytelniania za pomocą kluczy publicznych
    (myślę o nienadzorowanej zautomatyzowany zadania)


Tip

Był jeden warunek miałem problemy z początkowo:
tło sshd usługa musiała wykonać aplikacje w sesji graficznego użytkownika
(aby okno aplikacji pojawiają się w środowisku graficznym).

acceptable solution za mną biegł sshd usługę bezpośrednio w sesji GUI użytkownika
(rozpocznie się automatycznie, gdy użytkownik loguje się, w link, aby zobaczyć zmiany plik konfiguracyjny):

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

W rzeczywistości używam SSH, fwiw. Problem polega na tym, że SSH nie może uruchomić programu GUI (mimo że program GUI nie ma gui ...) –

+0

@Frew, [link] (http://spectlog.com/content/Run_cygwin_sshd_in_user_seesion_to_start_GUI_application) z końcówki specjalnie adresuje uruchamianie aplikacji GUI zdalnie w systemie Windows.I moim zdaniem nie ma prostszego i bardziej harmonijnego * rozwiązania tego problemu (przynajmniej w kontekście, z którym miałem do czynienia). Jeśli dany host Windows istnieje dla roli czystego serwera, może być konieczne automatyczne zalogowanie tego użytkownika po każdym ponownym uruchomieniu (aby sesja pulpitu i 'sshd' były cały czas aktywne). – uvsmtid

+0

Mogę zaglądać w to jeszcze raz, ale miałem bardzo poważne problemy z projektem, do którego to służyło (automatyczne testowanie instalatora NSIS) do tego stopnia, że ​​musiałem całkowicie zrezygnować. –

3

najprostszy sposób, który jest użycie będzie w dwóch etapach:

a. instalacja cygwin do zdalnego komputera

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

Powiązane problemy