필자의 요구 사항에 따라 아래 코드를 작성했지만 두 번째로 실행될 때마다 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
함께 if
PowerShell은 패션에. 프로세스에 따라 Start-Process
또는 실행 파일을 호출하면 시작하기에 충분합니다. 누락 된 경로는 경로 program.exe
를 표시하기 위해 호출 된 방법 / 지원 대상에 따라 다릅니다 . 실행중인 프로그램이 해당 정보를 노출하지 않을 수 있습니다.