У нас есть виртуальная машина (через Azure) в нашей офисной среде. В этой виртуальной машине мы запускаем скрипты Python для анализа извлекаемых нами данных.
Нас в команде пятеро, и каждый раз, когда кто-то из нас выходит на поле, пока кто-то другой находится в виртуальной машине, того, кто уже там, выгоняют.
Есть ли способ вывести запрос виртуальной машины, которая спрашивает, есть ли кто-нибудь, с кнопками Да или Нет? В настоящее время у меня есть этот код в пакетном файле:
@echo off
echo code=Msgbox("Is someone one the VM?", vbYesNo, "VM?") > "%temp%\popupBox.vbs"
echo WScript.Quit code >> "%temp%\popupBox.vbs"
cscript /nologo "%temp%\popupBox.vbs"
if %errorlevel%==7 call :cancel_tag
if %errorlevel%==6 call :ok_tag
exit /b 1
:ok_tag
echo Yes I am!
exit /b
:cancel_tag
echo No!
exit /b
Очевидно, это работает только на компьютере, который вы используете, я надеялся найти способ, чтобы это было передано на виртуальную машину, и если кто-то нажмет «Да», то ничего не произойдет. Если кто-то нажмет «Нет» или будет задержка, когда никто не ответит (так как на виртуальной машине никого нет), то он запустит другой пакетный файл, который у нас есть, который автоматически войдет в виртуальную машину для вас. Это осуществимо?
До сих пор мы пытались искать решения в cmd или PowerShell, поскольку на виртуальной машине они уже предустановлены, но у нашей команды есть опыт использования различных форм кода, поэтому мы готовы попробовать другие формы, которые будут работать.
Msg
и Net Send
у нас не работает. Мы используем Windows 10.
Спасибо,
Мамонт
решение1
Код, который вы показываете, это файл .bat/.cmd, а не скрипт PowerShell. PowerShell может выводить диалоговое окно/окно сообщения, не прибегая к пакетным файлам.
Net Send, будучи инструментом ОС, может сделать это с машиной или пользователем, но вы должны указать ему, что использовать.
Вы не показываете, что используете какие-либо параметры Net send в своем вызове Net Send. Вы также не говорите, находится ли цель в том же лесу/домене, что и пользователь.
Вы не можете отправить сообщение пользователю/компьютеру, используя ниже, который не находится в том же домене. Компьютеры и имена должны быть разрешимы.
net send
The syntax of this command is:
NET
[ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |
HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START |
STATISTICS | STOP | TIME | USE | USER | VIEW ]
Вместо этого вы можете использовать msg.exe
msg
Send a message to a user.
MSG {username | sessionname | sessionid | @filename | *}
[/SERVER:servername] [/TIME:seconds] [/V] [/W] [message]
username Identifies the specified username.
sessionname The name of the session.
sessionid The ID of the session.
@filename Identifies a file containing a list of usernames,
sessionnames, and sessionids to send the message to.
* Send message to all sessions on specified server.
/SERVER:servername server to contact (default is current).
/TIME:seconds Time delay to wait for receiver to acknowledge msg.
/V Display information about actions being performed.
/W Wait for response from user, useful with /V.
message Message to send. If none specified, prompts for it
or reads from stdin.
msg SomeDomainUserName /server:SomeDomainHostname message logoff
Если вы хотите использовать PowerShell, вы можете это сделать, есть много статей на эту тему.
Скрипт PowerShell для отправки сообщения на сетевой компьютер(ы)
Как отобразить всплывающее сообщение на удаленном компьютере с помощью PowerShell