같은 이름으로 3 개의 프로세스를 모니터링하고 싶습니다. 프로세스가 중단되면 해당 프로세스가 자동으로 시작됩니다.


0

필자의 요구 사항에 따라 아래 코드를 작성했지만 두 번째로 실행될 때마다 powershell은 실행 파일 경로를 캡처하지 않습니다.

powershell -command "& {get-process 'program' | format-list path}" > temp.txt

find /i "P1" temp.txt
if not errorlevel 1 (echo "P1") else (start "" "<path_of_p1>\program.exe")

find /i "P2" temp.txt
if not errorlevel 1 (echo "P2") else (start "" "<path_of_p2>\program.exe")

find /i "P3" temp.txt
if not errorlevel 1 (echo "P3") else (start "" "<path_of_p3>\program.exe")
exit

어쨌든 당신이 경로에 관심이있는 것처럼 보이지 않습니다. 왜 중요한가요? PowerShell 만 사용하는 것이 아니라 PowerShell과 배치 스크립팅을 혼합 한 이유는 무엇입니까?
Seth

실제로 스케줄러에서이 방망이를 실행하고 있으며 프로세스를 확인하고 프로세스를 찾지 못하면 해당 프로세스를 시작합니다. 제 경우에는 같은 이름을 가진 3 개의 프로세스가 있으므로 경로로 프로세스를 확인해야합니다. 다른 방법이 있으면 알려주세요.
Mohnani_L

이러한 프로세스는 어떤 방식으로 시작됩니까? 이름이 같지만 경로가 다른 이유는 무엇입니까? 어쨌든 대량 작업에 PowerShell을 사용하는 경우 왜 처음부터 배치입니까? PowerShell을 직접 사용하면 임시 파일, 찾기 등이 필요하지 않으며 찾고있는 프로세스를 필터링하는 훨씬 쉬운 옵션이 있습니다.
세스

Powershell에서 솔루션을 제공해 주시겠습니까? 나는 그것에 익숙하지 않다. 감사합니다
Mohnani_L

아닙니다, 그것은 당신의 일의 일부입니다. 당신은 사용해야하는 것 Where-Object대신 find하고 if또는의 결과를 사용하는 것이 Where-Object함께 ifPowerShell은 패션에. 프로세스에 따라 Start-Process또는 실행 파일을 호출하면 시작하기에 충분합니다. 누락 된 경로는 경로 program.exe를 표시하기 위해 호출 된 방법 / 지원 대상에 따라 다릅니다 . 실행중인 프로그램이 해당 정보를 노출하지 않을 수 있습니다.
세스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.