2011-12-10 7 views
3

내 컴퓨터가 Win7 64 비트입니다. PowerShell을 사용합니다.PowerShell의 마개 (프로그램 실행 중 시간 경과)

내 PowerShell에서 gcc 또는 gfortran을 실행하는 동안 내 프로그램이 실행되는 동안 '마개'(경과 한 시간)를보고 싶습니다. PowerShell에서 어떻게 할 수 있습니까?

이 스톱워치 (시간 경과)는 내가 실행중인 코드의 일부가 아니라 셸에 있어야합니다.

명령이 있습니까? 누군가 나에게 그것을하는 스크립트를 제공합니까 (저는 초보자입니다).

답변

0

시간을 내고 싶은 소리가납니다. $ executable 및 $ argument를 귀하의 세부 사항으로 대체하십시오. $ timeSpan 변수는 완료까지 걸리는 시간을 알려줍니다.

$executable = "C:\Windows\notepad.exe" 
$arguments = "C:\Windows\WindowsUpdate.log" 

$timeSpan = Measure-Command { Start-Process -FilePath $executable -ArgumentList $arguments -Wait -NoNewWindow } 

$timeSpan 

출력 :

Days    : 0 
Hours    : 0 
Minutes   : 0 
Seconds   : 24 
Milliseconds  : 255 
Ticks    : 242559320 
TotalDays   : 0.000280739953703704 
TotalHours  : 0.00673775888888889 
TotalMinutes  : 0.404265533333333 
TotalSeconds  : 24.255932 
TotalMilliseconds : 24255.932 
4

스크립트 (블록)이 실행되는 동안 시간이 지속적으로 아래처럼 뭔가를 할 수있는, 표시 할 경우

function timer($script, $interval = 1){ 
    $t = [system.diagnostics.stopwatch]::startnew() 
    $job = start-job -script $script 
    while($job.state -eq "running"){ 
     write-host -fore yellow "Elapsed: $($t.elapsed) " 
     $job | Receive-Job 
     sleep $interval 
    } 
    $t.stop() 
} 

timer -script {1..10 | %{ write-host $_ test; start-sleep 2}} 
+0

HI의 manojlds를 사용하여 사용 감사합니다 스크립트를 위해. 하지만 어떻게 사용할 수 있습니까? foe example 실행하려는 내 파일은 a.exe이므로 스크립트를 어떻게 통합합니까? – bill

+2

@ user1091340'timer -script {& $ pathToYourExe}' – manojlds

1

나는 것 Write-Progress cmdlet을 사용하여이 작업을 수행하십시오.

$start = Get-Date 
$j = Start-Job -ScriptBlock {...} 
do { 
    Write-Progress "Waiting for Job to Finish" "Waiting For $((Get-Date) - $start)" 
    Start-Sleep -milliseconds 250 
} while ($j.State -eq 'Running') 
Receive-Job -Job $j 

희망이 도움이

1

당신의 요구 사항을 정확하게 이해할 수 있는지 확실하지 않습니다 ... powershell cmdlet 또는 실행하는 ps1 스크립트의 경과 시간을 찾으려면 다음과 같이 the startexecutiontime 및 endexecutiontime 속성을 비교할 수 있습니다. 명령 내역.

당신은 시간에 원하는 명령을 찾을 수-역사를 사용하여, 당신은 마지막 명령로 경과 한 시간을 찾으려면이

Get-history -ID 123 | % { $_.endexecutiontime - $_.startexecutiontime} 

또는이

get-history -count 1 | % { $_.endexecutiontime - $_.startexecutiontime}