Powershell Profile

This is my Powershell profile.

Getting Started

  • Installation process: clone or copy to $env:USERPROFILE\Documents\WindowsPowerShell. Or just cherry pick pieces.

# run as administrator

Set-ExecutionPolicy RemoteSigned

  • Software dependencies: Windows 10, 8 or 7
  • Read about Posh-Git if you are a Git user – GitHub, Better Git with PowerShell - You’ve been Haacked
  • The Profile is a good place for command line aliases for commands not included in Powershell. Examples are like Windows cmd commands, shortened commands to save on typing.
  • For longer aliases or commands, Powershell functions work well. Look at Remove-Service in the Profile for an example of a missing Powershell command.
  • Keep in mind – if the Profile gets too bloated Powershell start up is slow. Running ngen.ps1 can shorten the PowerShell startup as well as other dotNet apps.
  • Approved Verbs for PowerShell Commands


# run Get-InstalledModule for a list of installed modules


# ######## sample output ########
# Version              Name                                Repository           Description
# -------              ----                                ----------           -----------
#              newtonsoft.json                     PSGallery            Serialize/Deserialize Json
# 2.0.223              oh-my-posh                          PSGallery            Theming capabilities
#              PackageManagement                   PSGallery            PackageManagement
# 0.7.1                posh-docker                         PSGallery            Powershell tab completion
# 0.7.3                posh-git                            PSGallery            Provides prompt with Git status
# 1.6.6                PowerShellGet                       PSGallery            PowerShell module with commands

# run Set-PSRepository to trust PSGallery

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

# run Install-Module to install the modules

Install-Module posh-git

# run to update modules

Update-Module PowerShellGet


  • Provide feedback or suggestions.


Org-mode Capture from Drafts App


  • Capture text from iOS Drafts app into Org-mode.
  • Add org-mode style tags from your Drafts tags.
  • Drafts keyboard macros to insert scheduled and deadline dates and code blocks.


  • Get the Drafts app for iPhone or iPad.
  • Get Org-mode capture action for Drafts from the iOS device.
  • Change the Dropbox (second) step to your target org file.

Dropbox (second step)

fileNameTemplate:   Test.inbox.org      # <<< change to your target org file
folderTemplate:     /Notes              # <<< change to your org folder on Dropbox

            * [[title]]

            :Created:  [[[date]]] [[[time]]]

writeType:          prepend


  • The Drafts app is great for quickly capturing any kind of text. Like the tagline says, Where Text Starts. Decide later whether it is email, text, tweet or whatever.
  • This action is for capturing text to Org-mode from iPhones and iPads.
  • The action converts Drafts tags to Org-mode style tags.
  • Drafts app is super useful for capturing text from almost any iOS app. This org-mode capture action is a quick step to getting it into the Org-mode workflow.


Posh Backup Dot Files

This is a PowerShell script to backup dot files and directories on Windows.

WARNING dot files can contain sensitive information. Do not clone to a public repo!


  • Clone this repo.
  • Edit the backup_list.txt file. Add your dot files.
  • Run posh_backup_dot_files.ps1


  • The script copies dot files and directories to the ./backup subdirectory.
  • It checks for changes and uses git to add and commit the changes.
  • If your dot files contain sensitive information do not clone to a public repository.

Feedback and suggestions are welcome.


Check for locked files

Companies work from Excel, Word and other files on network shared folders. More than one user cannot usually work on these files at the same time. Time is lost tracking down who has the file locked.

It can be hard to see who has a file locked. Sometimes Excel or Word shows who. But not always. Other files like shared PDF’s and CAD file types do not help much.

One way to see who locked a file is from the Windows file server as Administrator. Not practical for security reasons.

This tool has two parts:

  • A watcher that checks for locked files. The watcher uses a search list for watched files and folders.
  • A web server that displays the locked files and who locked them. No need for special access. Just check a web page.

Quick setup

  • Clone or download and extract this Github repo to a folder on the file server.
  • Make sure NodeJS and npm are installed and on the PATH. Open a command line to the repo location and run npm install to initialize.
  • From the same command line start the web server – npm start. By default it runs on port 80 so if that is a problem edit package.json scripts/start. Visit http://fileserver-name.
  • In a separate command line start File lock watcher npm run watch [requires Administrator privledges]



getTP -- Get Source Code TODO's for a TaskPaper formatted file

This is a quick and simple Python script that uses Ag – The Silver Searcher to find ‘TODO’ items in a source tree.

The output is formatted for the TaskPaper plain text format and sent to stdout. The output can be piped to a .taskpaper file.

Nothing fancy. Ag is super fast and does the heavy lifting. The Python code formats the Ag format to TaskPaper.

  • The current directory name is used for the root project name.
  • Each file with TODO’s are sub-projects. The sub-project names include relative directories.
  • Tasks begin with the line number of the TODO.


      - line: 2    Combine TODO's to a TaskPaper list
      - line: 8    todo_command = 'ag TODO'
      - line: 13   Use Ag Silver Searcher to find TODO comments in source

      - line: 1    # getTP - Get Source Code TODO's for a TaskPaper formatted file
      - line: 3    This is a quick and simple Python script that uses [Ag - The Silver Searcher]...

      - line: 5    * TODO: Ad nulla ad Lorem quis et quis in in laborum incididunt adipisicing occaecat id voluptate.