VBS диалог с пользователем

Последнее редактирование:
К сожалению, не экстрасенс, не понимаю, что означает криво запускается.

через psexec запустил на удаленном компе. появилось окошко диалога, но без кнопок. и все повисло.
 
появилось окошко диалога, но без кнопок. и все повисло.
Можно посмотреть скришнот?

А Вам нужно чтобы диалог появился на сервере или клиенте, куда вы передаёте команду ?
 
в общем, сделал все следующим образом:

батник-билдер формирует файл installer.bat, затем через psexec отправляет его на целевую машину, попутно берет с сетевой шары еще 2 файла:

CMD/BATCH:
%psexec% -s -h -d @%hostfile% -c -f \\fsmsk1\Soft\scripts\1\1.vbx
cls
%psexec% -i -s -h -d @%hostfile% -c -f \\fsmsk1\Soft\scripts\1\1.bat
cls
%psexec% -s -h -d @%hostfile% -c -f %installer%

т.к. psexec не может скопировать с сетевой шары и запустить на удаленной машине самостоятельно файл.vbs (или может? если да, то я не знаю, как), пришлось сменить расширение скрипта (в дальнейшем батник меняет расширение на *.vbs)
файл 1.bat выполняет всего 2 действия - меняет расширение на нужное и стартует файл скрипта.
одновременно с файлом 1.vbs запускается файл installer.bat, в котором перед началом собственно тех действий, ради которых он доставляется на целевую машину, происходит ожидание появления двух файлов. один из которых инициирует выполнение работы батника, второй - ее отменяет. ну и независимо от результатов выполнения батника и действий пользователя - все файлы в конечном итоге ликвидируются.

код файла 1.bat:

CMD/BATCH:
@echo off
ren c:\windows\system32\1.vbx 1.vbs
start c:\windows\system32\1.vbs
exit

код файла installer.bat (сформированный батником-билдером):

CMD/BATCH:
@ECHO OFF
set per=1
:begin1
TIMEOUT /T 10 /NOBREAK
set /a per=%per%+1
if %per% == 40 goto 05
if exist "c:\windows\temp\file1.txt" goto 00
if exist "c:\windows\temp\file2.txt" goto 05    
goto begin1
:00
if exist "%PROGRAMFILES%\Unity_5.3.5p5\Editor\Unity.exe" goto 04
msg * /server:localhost /time:300 "Attention. After a while, on your computer will be installed Unity version 5.3.5p5. Please save all your projects and close Unity application. Unity 5.3.5p5 installer will be start automaically after 5 minutes in silent mode."
ping localhost -n 300
taskkill /f /im unity.exe /t
ping localhost -n 30
cd /d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs"
if exist "Unity\" ren Unity Unity_tmp
:01
\\fsmsk1\Soft\Developers_Tools\Unity\5.3.5p5\UnitySetup64-5.3.5p5.exe /S /D=%PROGRAMFILES%\Unity_5.3.5p5
\\fsmsk1\Soft\Developers_Tools\Unity\5.3.5p5\UnitySetup-Android-Support-for-Editor-5.3.5p5.exe /S /D=%PROGRAMFILES%\Unity_5.3.5p5
\\fsmsk1\Soft\Developers_Tools\Unity\5.3.5p5\UnitySetup-iOS-Support-for-Editor-5.3.5p5.exe /S /D=%PROGRAMFILES%\Unity_5.3.5p5
\\fsmsk1\Soft\Developers_Tools\Unity\5.3.5p5\UnitySetup-Windows-Support-for-Editor-5.3.5p5.exe /S /D=%PROGRAMFILES%\Unity_5.3.5p5
if exist "Unity\" ren Unity Unity_5.3.5p5
:02
if exist "Unity_tmp\" ren Unity_tmp Unity
:03
msg * /server:localhost /time:300 "Unity 5.3.5p5 was installed. You can find shortcuts of Unity in START menu. If you have a problems with new version of Unity or with license, please contact with helpdesk for check problems and fix it."
goto 05
:04
msg * /server:localhost /time:300 "Unity 5.3.5p5 already exist. Installation aborted."
:05
taskkill /f /im wscript.exe
del /f /a "%systemroot%\temp\file1.txt"
del /f /a "%systemroot%\temp\file2.txt"
del /f /a "%systemroot%\system32\1.vbs"
del /f /a "%systemroot%\system32\installer.bat"

в целом, хоть выглядит все это кривенько и по-дилетантски, но работает, цель задачи достигнута, но, что хотелось бы изменить и пофиксить...

если это возможно, избавиться от промеждуточного батника, стартующего файл скрипта, т.к. на данный момент перед появлением окошка скрипта, мелькает черное окошко CMD, что не очень красиво...
ну и если возможно, сделать так, чтобы скрипт после того, как пройдет определенное время ожидания ответа от пользователя и определенное количество отмен выполнения пользователем, нужно, чтобы он автоматически закрывался.
на данный момент это делается в файле installer.bat, что тоже не очень красиво и правильно, наверное...

буду рад комментариям и замечаниям и помощи :)
 
заметил такую фигню... с первого раза почему-то psexec не отрабатывает на целевой машине... ругается... что нет доступа... запускаю повторно и все нормально потом... почему так - не понятно...
еще попробовал такой вариант:
CMD/BATCH:
psexec -i -h -s -d \\domain-pc cscript.exe /nologo 1.vbs

скрипт запускается (если предварительно как и до этого его скопировать целевой комп в system32), но тогда постоянно висит черное окошко cscript.exe. закрывается оно только при нажатии на кнопу ОТМЕНА...
 
Назад
Сверху Снизу