none
Psexec и создание лога успешных и сбойных подключений RRS feed

  • Вопрос

  • Доброго времени суток!

    Имеется простой сценарий, который берет имя пк из файла  comp4activation.txt, поэтапно подключается к компам и производит некоторые действия 

    psexec -i -d @N:\comp4activation.txt -u mydomain\domian admin -p Domainpass cmd "....."

    примерное содержимое  comp4activation.txt:

    PC-Buhgalteria1 
    PC-Buhgalteria2
    PC-Buhgalteria3
    как доработать скрипт, чтобы создавалось 2 txt файла: comp-ok.txt & comp-fail.txt ?

    соответствено в comp-ok.txt имена машин, на которых всё отработало

    а в  comp-fail.txt  - имена машин, к которым подключиться не удалось. 

    13 августа 2012 г. 6:49

Ответы

  • "psexec -d" возвращает в качестве значения errorlevel PID запущенного им процесса, а не результат успешности операции.

    В таком случае можно попробовать посмотреть в stdout\stderr результат выполнения; например, вот так:

    for /f %%i in (cmp.txt) do (
    	psexec.exe -d \\%%i cmd.exe /c 2>&1 | findstr.exe /i /c:"cmd.exe started on" && (
    		setlocal
    		echo %%i >> success.txt
    		endlocal
    	) || (
    		echo %%i >> fail.txt
    		)
    	)


    • Изменено Mopuapmu 18 февраля 2013 г. 7:48
    • Помечено в качестве ответа KazunEditor 18 февраля 2013 г. 9:51
    18 февраля 2013 г. 7:43

Все ответы

  • for /F %%i in (C:\cmp.txt) do (
     echo %%i
     psexec -i \\%%i -u mydomain\domian admin -p Domainpass cmd "....."
     
     if ERRORLEVEL 0 (
      echo %%i >> comp-ok.txt
     ) else (
      echo %%i >> comp-fail.txt
     )
    )

    13 августа 2012 г. 7:01
    Отвечающий
  • Просто непомернейшее СПАСИБО!!!

    только psexec возращает не Errorlevel 0, а что-то типа cmd started on PC-Buhgalteria2 with process ID 1256.

    как быть тогда?

    • Изменено It-Kirill 13 августа 2012 г. 7:32
    13 августа 2012 г. 7:07
  • "psexec -d" возвращает в качестве значения errorlevel PID запущенного им процесса, а не результат успешности операции.

    В таком случае можно попробовать посмотреть в stdout\stderr результат выполнения; например, вот так:

    for /f %%i in (cmp.txt) do (
    	psexec.exe -d \\%%i cmd.exe /c 2>&1 | findstr.exe /i /c:"cmd.exe started on" && (
    		setlocal
    		echo %%i >> success.txt
    		endlocal
    	) || (
    		echo %%i >> fail.txt
    		)
    	)


    • Изменено Mopuapmu 18 февраля 2013 г. 7:48
    • Помечено в качестве ответа KazunEditor 18 февраля 2013 г. 9:51
    18 февраля 2013 г. 7:43