Proposed new standard verbs

  • Comments 21


The PowerShell team is planning on adding the following verbs to the standard PowerShell verbs'  list. Please review and send us any feedback you might have:

Invoke To introduce or put into operation (This verb has been a standard verb but was never officially added to the list)
Pop To remove something from the top of a stack.
Push To put something onto a stack.
Publish To make known to another .  (this  is related to data)
Unpublish To make it unknown to another.
Search Get a reference to a resource or summary information about a resource by looking in a specified collection. ( Does not actually retrieve that resource, but provides information to be used for retrieving it)
Show Retrieve and display a set of information. (this is related to display) (combine get, format and out)
Hide Make the display not visible
Wait To remain inactive or in a state of repose, as until something expected happens


Wassim [MSFT]

<Updated to correct PUSH/POP definitions and capitalize Search - jps>

Leave a Comment
  • Please add 8 and 4 and type the answer here:
  • Post
  • I'd really appreciate feedback on this proposal to expand the standard verb set: [link] Thanks!

  • Looks good, but you should capitalize "search" ;-)

    That said, is there going to be a place where people can go an publish Cmdlet names and code, i.e. Get-ScheduledTasks (as one example.)

    It would be awesome to have a central clearing house for Cmdlet names and code and interfaces so users don't have to reinvent the wheel and also create so many incompatible implementations (can you say "Split-String?")

  • In fact I already use Invoke, Search and Show, though they are not standard. Pop-Location, Push-Location are already standard cmdlets. Other proposed verbs look useful, too.

  • While opinions may vary, I would really prefer to have "pop" remove from the top of a stack, and have "push" put something on top of a stack.

  • Call me crazy but I think Push and Pop are reversed in that table. Otherwise sound great.

  • Suggestions for some new verbs -

    Something to complement creation (which is covered with 'New'), like 'Destroy' or 'Dispose'.

    Also, how about verbs to support transactional operations?

    1. To begin modification - 'Modify'

    2. to commit the modifications - 'Save', 'Commit'

    3. Optionally a 'Discard' or one mentioned above.

    - 'Push' and 'Pop''s meaning are interchanged.

    - The entry for search is not completely visible here.

  • Invoke is already present as Invoke-Item and Invoke-Expression

  • Good to see these verbs standardized. Are there plans to enforce correct use of verbs (or non-standard verbs output a warning)?

  • It seems as if Invoke should have an opposite, too, such as Cancel or something. If "Invoke-Procedure" starts a procedure running, then wouldn't "Cancel-Procedure" end it prematurely?

  • I like most of the new verbs especially Search.  The ones I'm not sure about are Publish/Unpublish because I could see just using Add/Remove to do this.

  • These new verbs look fine.  There really needs to be a way to speed this process.  Maybe someone that's building a PowerShell centric web site can create a PowerShell thesaurus where the community can suggest verbs, find out what others are using etc.  I was a week or two away from having to pick a verb like "wait".  I'm glad I didn't ship a product that used "delay".  Now, what about "reset" and "submit"?

  • Thank you all for your feedback.

    According to, the definitions of Push and Pop are the correct ones.

    Wassim [MSFT]

  • > It would be awesome to have a central clearing house for Cmdlet names

    We concur.  It will take us a while but we are working on something in this space.  Things change so I dont' want to talk more until we have it.


    We recommend not doing this pattern and using SET instead.  There are all sorts of problems that you avoid by using a REST pattern.

    >  Are there plans to enforce correct use of verbs (or non-standard verbs output a warning)?

    This topic deserves it's own blog entry.  I'll try to do that soon.

    > It seems as if Invoke should have an opposite, too, such as Cancel or something

    As a general rule, if you can do something like that, you should be using STOP/START.  There might be cases where it is fine to match an INVOKE with a STOP.  We are looking at just such a situation so let me tell you about it to provide some insight into our thinking.  


    As part of remoting, we looking at extending INVOKE-EXPRESSION with -COMPUTER which would then run the expression on the remote computer or computers.  There will be times that the command takes a long time to finish (because the command is long or because you are invoking it on hundreds/thousands of machines).  In those circumstances you don't want to wait until so we are thinking of adding -ASYNC.  We then need a way of cancel this which of course lead us to think STOP. But stop is matched with START not INVOKE.  I then realized that INVOKE -ASYNC could almost be thought of as the definition of START!

    We haven't finished thinking about that but I thought it was interesting to share.


    Jeffrey Snover [MSFT]

    Windows Management Partner Architect

    Visit the Windows PowerShell Team blog at:

    Visit the Windows PowerShell ScriptCenter at:

  • The list above looks fine by the way :-)

    But, can also the team fix the function    a$ = Get-Content –Encoding Byte    it is extremely slow, and it allocates 800MB or ram for each MB of content loaded :-)

  • Hi, Jeff.

    Rather than invoke. Wouldn't Start (and Stop) be better and more generally useful?


Page 1 of 2 (21 items) 12

Proposed new standard verbs