У меня есть пакетный скрипт, который запускается из команды AT, и может быть запущен более одного раза. Когда он запускается, мне нужно определить, запущен ли он, и если да, немедленно выйти (второй).
- Он должен быть надежным и обрабатывать, если сценарии неожиданно завершаются (т.е. я не могу установить флаг при входе и очистить его при выходе)
- Он должен работать в сеансе удаленного рабочего стола
- Я застрял на XP с Powershell v2, но не против написать небольшой exe, если я не могу сделать это в batch/powershell или vbs
- Сценарий должен быть свернут, поэтому я запускаю его с помощью команды "Пуск" NAME /MIN% COMSPEC% /C «MyScript.bat»
- Другие окна cmd могут быть открыты, поэтому мне нужно проверить работающий скрипт
- Пакетный скрипт запускается от имени пользователя SYSTEM, но я не могу использовать WMI
Я использовал PowerShell Get-Process для просмотра MainWindowTitle, но это не сработало при удаленном подключении к компьютеру, так как сценарий может быть запущен, но не отображается в этом экземпляре удаленного подключения. В этом случае процесс cmd виден Get-Process, но MainWindowTitle пуст.
Я попробовал Get-Process и посмотрел на расширенное свойство StartInfo.EnvironmentVariables, но не вижу, как создать env var, чтобы он отображался в свойстве.
Я думал об использовании /WAIT в команде запуска, тогда AT будет оставаться открытым, пока не завершится, но сценарий, содержащий AT, не свернут
Есть идеи?