How to perform "Time Tracking" in PowerShell?

Urgh, time tracking…
That’s my first emotional reaction to those two words. If you feel the same way, please continue reading as by the end I will provide my practical analysis and approach to tackle this quest.

Time Tracking – Why?

For starters, here are very thoughtful and elegant quotes about time tracking and time management from some of the books that I’ve read. (Spoiler alert book links are my affiliate Amazon links, thanks for your support!).

The first step toward executive effectiveness is therefore to record actual time-use.
The Effective Executive. Peter Drucker


Everybody has the same 24 hours in a day and 7 days in a week, but different people accomplish different things with that time.
Scott Fox. Click millionaires


No matter how hard you try, you can’t scale the amount of time in your day. And since you can’t somehow buy more hours, you need to find ways to use those hours better.
Paul Jarvis. Company of One


If the wise thoughts from very knowledgeable and experienced people did not convince you, I have few more pretty pragmatic bullet points.

To show Value

This is a universal thing that is applicable to individual contributors, team members, freelancers and consultants. All the actions that you are performing have to be precisely recorded and categorized by project & customer. Also all the daily activities like team communications, email and calls have to be tracked to improve your personal efficiency.

If it is not documented it does not exist.

Communicate the value.

Once you have all artifacts of your activities it is much easier to communicate the effort and value that you contribute to your customers, projects and team members.

Self organization (Increased productivity, Better time management)

Idea is to be more productive and always improve.

Simply tracking your time is just half of the battle. It definitely takes time to develop a habit and  religiously track your time.

Once that is underway, you need also to analyze where does your time goes.

Main point is to identify the time wasters and cut them out and focus more on the important tasks.

Better work-life balance

I know what you think… But hear me out, because of time tacking you understand how much time you’re spending on work-related tasks versus personal tasks. This can help you achieve a better work-life balance by identifying areas where you need to cut back on work and spend more time on personal activities.


Time Tracking in PowerShell – How?

Discipline is more important than fancy, complex tools.

At the beginning I was simply using notes to capture the start and end time of the activity. But being a flawed human being I was missing some of the activities, as I was distracted by IMs, calls, emails and even my thoughts.
So to organize all of that and at least start looking into the direction to become “Time Management Ninja” I decided to add a bit of the automation into my time tracking routine.

As the tool for automation I used PowerShell, because as we all know it is awesome.
Right at this point the idea of the TimeTrackerApp module came to light.

Main goal is to make it simple and efficient. Primary requirement is quick and easy to start tracking when I am doing some activity and then stop it while calculating the time elapsed.

For more efficient usage of recorded time tracking activities I envision some type of rudimentary text box where I could add simple comment and start timer while I am working on something.


Module is published to PowerShell Gallery. Use the following command to install it:

Install-Module -Name TimeTrackerApp -AllowPrerelease


Generic workflow is to create/adjust configuration file to suit your needs and then start time tracking.


  • Create default config file
  • Update it if needed
  • Start time tracking instance(s)
  • View started time tracking instance(s)
  • Stop started time tracking instance(s)
New-DefaultConfigFile -Verbose
Get-ConfigFile -Verbose
Start-TimeTracker -Comment "Reading & replying to email" -Technician "Clark Kent"
Get-TimeTracker | select -ExpandProperty Id | Stop-TimeTracker


  • Create default config file
  • Update it if needed
  • Start GUI
New-DefaultConfigFile -Verbose
Get-ConfigFile -Verbose

Thanks a lot for reading.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.