프로세스를 시작하고 출력을 변수로 읽을 수 있어야합니다. 그런 다음 명령 반환에 따라 전체 출력 또는 선택된 하위 집합 만 표시하도록 선택할 수 있습니다.powershell에는 popen과 동일한 기능이 있습니까?
분명히 말하면, 필자는 텍스트 기반 프로세스 (실제로 psexec)를 실행하고 해당 명령 (stdout, stderr 등)의 출력을 콘솔에 직접 출력하지 않고 변수로 읽어 들이기를 원합니다.
프로세스를 시작하고 출력을 변수로 읽을 수 있어야합니다. 그런 다음 명령 반환에 따라 전체 출력 또는 선택된 하위 집합 만 표시하도록 선택할 수 있습니다.powershell에는 popen과 동일한 기능이 있습니까?
분명히 말하면, 필자는 텍스트 기반 프로세스 (실제로 psexec)를 실행하고 해당 명령 (stdout, stderr 등)의 출력을 콘솔에 직접 출력하지 않고 변수로 읽어 들이기를 원합니다.
당신은 내가 당신이 중 어딘가에 실행의 출력을 파이프 또는 System.Diagnostics.Process
을 활용에서 수행하고 싶은 어떤이있는 파워 쉘 팀 블로그에서 this article 생각 프로세스의 어떤 종류의, 그러나에 대한 몇 가지 세부 사항을 떠났다.
이제 당신이 원하는 무엇을, 당신이 함께 원하는대로 수행 할 Process
개체의 StandardOutput
속성에서 읽은 다음 RedirectStandardOutput
속성으로 true
에 공급하는 ProcessStartInfo
클래스를 사용하고 있습니다 같이 두 번째 옵션은 소리 있음 산출. StandardError
는 동일하게 작동합니다.
는 지금까지 변수에 읽기 물건에 관한 한, 당신은 단지,하지만하지 자세한 정보, 경고 또는 오류 스트림
$output = ps
처럼이 단지 사로 잡을 것입니다 표준 출력을 뭔가를 할 수 있어야합니다. 특수 변수 $?
을 테스트하여 이전 명령의 종료 코드를 얻을 수 있습니다.
더 자세한 정보는 좀 더 완벽한 답변을 제공하는 데 도움이 될 것이라고 생각하지만 희망 사항은 사용자가 찾고있는 것을 향한 몇 가지 방법입니다.
PowerShell Community Extensions은 시작 프로세스을 포함합니다. 실제로 System.Diagnostics.Process을 반환합니다.
> $proc = Start-Process pslist -NoShellExecute
그러나, 이것은 당신이를 실행하기 전에 출력을 리디렉션을 허용하지 않습니다 그것을 반대프로세스를 반환하면서. 하나는 자신의 프로세스를 생성 먼저 ProcessStartInfo를 회원을 수정하여 그것을 실행할 수있는 수행합니다 : 당신이 원하는 얼마나 명확 확실하지
> $proc = New-Object System.Diagnostics.Process
> $proc.StartInfo = New-Object System.Diagnostics.ProcessStartInfo("pslist.exe")
> $proc.StartInfo.CreateNoWindow = $true
> $proc.StartInfo.UseShellExecute = $false
> $proc.StartInfo.RedirectStandardOutput = $true
> $proc.Start()
> $proc.StandardOutput.ReadToEnd()
합니다. PowerShell에 의해 시작된 명령에서 출력을 포착하고 싶습니다 ... popen과 같습니다. 이 페이지는 processse를 시작하는 방법을 나열하는 것으로 보인다. – vfilby
바로이 예제는 실행 파일 실행을 다룹니다. ProcessStartInfo 클래스, 특히 RedirectStandardOutput 속성을 활용하여 원하는 것을 캡처하십시오. –
예, 그걸 동시에 알아 냈습니다. PowerShell의 스트림에서 데이터를 읽는 것에 대한 힌트가 있습니까? – vfilby