« Paper - Managing Large Scale System Depl... | Main | Expression Media Encoder - Preview Updat... »

Progress Bars in PowerShell

Posted 2007-07-31 03:51 PM in PowerShell.

PowerShell has a thousand nice features, but one of the nicer ones that I end up using all the time is the built in Write-Progress cmdlet. Shady the Intern came by today with a PowerShell script that printed dots to report progress, like:

Doing some stuff........................

I recommend he switch to Write-Progress. A nice feature of Write-Progress that I don't see used enough is the assigning of IDs to Activities, and then referencing those IDs as ParentIDs when writing out the progress of a Child Activity.

for ($i = 1; $i -le 10; $i++) 
{
  write-progress -id 1 -activity "Doing some stuff" -status "whatever" -percentComplete ($i*10);
   sleep 1; 
   for ($j = 1; $j -le 10; $j++)
   {
      write-progress -id 2 -parentId 1 -activity "Doing some child stuff" -status "yay" -percentComplete ($j*10)
      sleep 0.75
   }
}

PowerShell Progress

Here's a trivial example. Two for loops, each sleeping for a bit. The second for is a child of the first. Notice that ID of first loop is -activity 1 and the second references that activity via -parentActivity. This really adds, in my opinion, to the fit and finish of any script.



Tuesday, July 31, 2007 5:53:41 PM (Pacific Standard Time, UTC-08:00)
damn that's cool!

i was doing this in a much more long winded way.

one thing -- it'd be good to stick semi colons in your example, on the end of these two lines:

write-progress -id 2 -parentId 1 -activity "Doing some child stuff" -status "yay" -percentComplete ($j*10) ;
sleep 0.75;

cause otherwise when you copy and paste it all as one line, powershell thinks 'sleep' is a parameter to the write-progress command.

nifty trick, thanks!
lb



Tuesday, July 31, 2007 6:22:00 PM (Pacific Standard Time, UTC-08:00)
Yes, it's a cool feature; but implementing it in a custom PowerShell host is a pain in the neck! (doesn't help at all that the PowerShell hosting documentation is the suxorz, but still :))
Tuesday, July 31, 2007 8:11:06 PM (Pacific Standard Time, UTC-08:00)
I like your powershell color scheme/prompt.

Any chance you could post your settings?
Tuesday, July 31, 2007 8:48:35 PM (Pacific Standard Time, UTC-08:00)
Sure...I think it's the standard theme, but I'll check.
Wednesday, August 01, 2007 8:19:20 PM (Pacific Standard Time, UTC-08:00)
Although the series of dots, or o's is a simple method to present status, I have always found it very nice to see an updated % complete. OS/2, yes, OS/2, had a great status on the commandline ftp, where it would update the % complete as it upload/downloaded files. This was all text based, and provided me with more information than a series of dots does.

Is their perhaps a progress cmdlet that does this?
Comments are closed.

Contact

Sponsors

Hosting By

Hot Topics

Tags

Calendar

<November 2009>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

Archives

November, 2009 (5)
October, 2009 (19)
September, 2009 (11)
August, 2009 (12)
July, 2009 (21)
June, 2009 (26)
May, 2009 (16)
April, 2009 (13)
March, 2009 (17)
February, 2009 (17)
January, 2009 (18)
December, 2008 (32)
November, 2008 (17)
October, 2008 (22)
September, 2008 (16)
August, 2008 (14)
July, 2008 (25)
June, 2008 (19)
May, 2008 (17)
April, 2008 (17)
March, 2008 (26)
February, 2008 (21)
January, 2008 (28)
December, 2007 (19)
November, 2007 (17)
October, 2007 (31)
September, 2007 (39)
August, 2007 (37)
July, 2007 (43)
June, 2007 (37)
May, 2007 (32)
April, 2007 (38)
March, 2007 (29)
February, 2007 (46)
January, 2007 (31)
December, 2006 (27)
November, 2006 (31)
October, 2006 (32)
September, 2006 (39)
August, 2006 (34)
July, 2006 (40)
June, 2006 (18)
May, 2006 (31)
April, 2006 (34)
March, 2006 (30)
February, 2006 (38)
January, 2006 (44)
December, 2005 (19)
November, 2005 (34)
October, 2005 (24)
September, 2005 (37)
August, 2005 (20)
July, 2005 (24)
June, 2005 (33)
May, 2005 (16)
April, 2005 (22)
March, 2005 (34)
February, 2005 (15)
January, 2005 (37)
December, 2004 (28)
November, 2004 (30)
October, 2004 (34)
September, 2004 (22)
August, 2004 (34)
July, 2004 (18)
June, 2004 (64)
May, 2004 (49)
April, 2004 (21)
March, 2004 (29)
February, 2004 (29)
January, 2004 (36)
December, 2003 (25)
November, 2003 (24)
October, 2003 (59)
September, 2003 (42)
August, 2003 (24)
July, 2003 (44)
June, 2003 (29)
May, 2003 (21)
April, 2003 (30)
March, 2003 (27)
February, 2003 (47)
January, 2003 (50)
December, 2002 (31)
November, 2002 (38)
October, 2002 (44)
September, 2002 (15)
May, 2002 (2)
April, 2002 (4)

Google Ads