Проверка запущенной программы
ДД, хотел сделать простую программку, но что то не то я пишу видимо..
ну на примере блокнота допустим
Код:
#проверка запущенной проги
$chek = Get-Process | where {$_.name -match "notepad"}
if($chek -eq "notepad")
{
"notepad ok"
}
else
{
"notepad not ok"
}
но программа постоянно выдает not ok, хотя процесс висит..
что не то делаю?
|
В сети такой пример гуглится:
Код:
if ( -not (get-process | where {$_.ProcessName -eq 'notepad'}))
{
'not run. Start Running'
Start-Process -FilePath 'c:\windows\notepad.exe'
}
else
{'Arlready exist'}
|
DJ Mogarych |
03-04-2023 11:03 3006610 |
Код:
Get-Process | where {$_.name -match "notepad"}
Лучше сразу проверять нужный процесс, чем получать их все и потом выбирать нужный.
Код:
$procName = "notepad"
if (get-process $procName -ErrorAction SilentlyContinue) {
"$procName is OK"
}
else {
"$procName is not OK"
}
|
Цитата:
Цитата John87
if($chek -eq "notepad") »
|
Лего же посмотреть, что записано в переменной $chek... просто в консоли наберите имя переменной.
В условном блоке Вы сравниваете объект со строкой... что, естественно, приводит к отрицательному результату...
сравнивать надо так:
if ($chek.processname -eq "notepad"){...
|
ладно, теперь чуть усложним задачу..
совершенно не могу найти смысл убирать goto из ps.. как теперь вернуться на исходную и начать все снова?
Код:
#проверка запущенной проги
$procName = "notepad"
if(get-process $procName -Erroraction silentlycontinue){
"notepad ok"
Start-sleep -seconds 10
goto start
}
else
{
"notepad starting"
start-process C:\Windows\System32\notepad.exe
Start-sleep -seconds 10
goto start
}
|
Цитата:
Цитата John87
совершенно не могу найти смысл убирать goto из ps.. как теперь вернуться на исходную и начать все снова? »
|
Например, тот же:
|
что то мне думается это не совсем то..
мне нужно в этой конструкции
Код:
if(get-process $procName -Erroraction silentlycontinue){
Start-sleep -seconds 600
goto start
}
else
{
start-process C:\Windows\System32\notepad.exe
Start-sleep -seconds 600
goto start
}
иначе сказать, скрипт должен работать 24/7 и мониторить раз в 10 минут что приложение запущено 24/7..
если запущено - ждем еще 10 мин, если нет - запустить и ждать 10 мин.. и так пока не остановишь..
|
DJ Mogarych |
03-04-2023 13:23 3006631 |
Это делается через планировщик задач, а не через цикл в скрипте.
|
Зачем ожидание в 10 минут, если приложение должно быть запущено 24/7?
|
Цитата:
Цитата John87
что то мне думается это не совсем то.. »
|
то-то, задаем условия и запускаем цикл...
GOTO - самый дурацкий оператор в программировании... потому он мало где присутствует.
Цитата:
Цитата John87
иначе сказать, скрипт должен работать 24/7 и мониторить раз в 10 минут что приложение запущено 24/7..
если запущено - ждем еще 10 мин, если нет - запустить и ждать 10 мин.. и так пока не остановишь.. »
|
Это делается подпиской на события... закрылся процесс - запускаем и т.д.
примерно так
|
Время: 23:55.
© OSzone.net 2001-