Powershell UserDefined Cmdlets
Powershell statements are "commands" to the powershell console.
The purpose of the statements is to tell the powershell what to do.
Command to get powershell version
Execute below command to know powershell version
ps>$host.version
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
Note: You can identify version at the top powershell window.
Windows PowerShell Cmdlet
Cmdlets are specialized commands in the PowerShell environment that implement specific
functions.
Below four cmdlets are critical to figuring out how to make PowerShell do your work.
Cmdlets - Get-Help
Cmdlets - Get-Command
Cmdlets - Get-Member
Cmdlets - Get-PSDrive
Command to get powershell version
Execute below command to know powershell version
ps>$host.version
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
Note: You can identify version at the top powershell window.
The concepts in this tutorial have come from my readings of Bruce Payette's
book - Windows PowerShell in Action. Bruce is a founding member of
the PowerShell team and is a co-designer of the PowerShell language. His
book is highly recommended and has been made available from this site. Who
better to learn about PowerShell than from the designer himself!
There are four categories of PowerShell commands: Cmdlet (Command-Let),
PowerShell Functions, PowerShell Scripts, and native Windows commands. Each
category will be examined in tutorials on this site. Lesson 2 focuses on
the PowerShell cmdlet, so let's get started...
cmdlet - naming convention
There are over a hundred new PowerShell commands to learn, but no need to
panic. Unlike most other command-line interfaces, PowerShell commands have
been standardized using a "verb-noun" naming convention know as a cmdlet.
This standard simplifies the learning curve and provides a better
description of what the cmdlet does. To see a list of cmdlets available in
PowerShell type the following cmdlet:
get-command <enter>
Note: <enter> denotes typing the Enter/Return key on your
keyboard.
Image 2.1
The "Name" column lists the cmdlets in the "verb-noun" naming convention.
Next, let's list all the commands that use a specific verb. The following command yields all cmdlets that use
the verb "Get."
get-command -Verb Get <enter>
Image 2.2
Play around with the -Verb parameter, try finding commands that use the
verbs; Add, Clear, New, and Set.
Getting commands that use specific nouns is just as easy.
Type the following command to see which cmdlets use the noun "Service."
get-command -Noun Service <enter>
Image 2.3
Just as it sounds, the verb describes an action and the noun describes the
"what" to take the action against. One thing I want to mention before
moving forward, the PowerShell command line is not
case-sensitive. In PowerShell - "get-service" or "Get-Service" or even
"GeT-SerVIce" is the same command.
Getting help
In learning new technologies, it is important to find information quickly
and easily. Get-Help cmdlet has been designed for that purpose; this will
be the most utilized cmdlet until you become more proficient.
Get-Help Examples:
Information about Get-Help cmdlet. Includes description, syntax, and
remarks.
Get-Help
Information about all available help topics.
Get-Help *
Information about a specific cmdlet.
Get-Help Get-Service
Two other forms of the Get-Help cmdlet exist, the noun "Help" and the "-?"
parameter. Help, by itself provides the same info asGet-Help *. Use Help with a cmdlet as follows,Help Get-Service. With the help parameter, Get-Service -?. The Scripting Guys created a graphical
Help file which is available on this site. Located in the
Categories -> PowerShell Downloads -> PowerShell Graphical Help
File.
The Graphical Help file is great tool for learning and reference, I
recommend downloading it.
Using cmdlets
In this section I will be using Service to demonstrate
cmdlets. Image 2.3 lists eight cmdlets associated with the noun Service: Get-Service, New-Service, Restart-Service,
Set-Service, Start-Service, Stop-Service, and Suspend-Service. Not only
will we be running cmdlets from the PowerShell command line, I'm also going
to explain it graphically. O.k. that sounds kind of graphic... what I mean is
I'm going to describe the equivalent action taken when working in GUI
tools. I find this a tremendous help when attempting to understand new
concepts.
What services are on the computer? Type the following cmdlet:
get-service <enter>
Image 2.4
You should now have a list of services on the computer as well as their
status, similar to the list above. Which GUI tool gives us the same
information? The Services MMC (Microsoft Management Console). Launch the
Services MMC from Start -> Programs -> Administrative Tools -> Services. If
Administrative Tools are hidden from the Programs Menu, you can launch it
by typing services.msc from the PowerShell command-line.
As stated earlier, one of the PowerShell command categories is "native
windows commands." This is how we are able to launch services.msc from the
PowerShell command-line.
Image 2.5
Exercise 1: Stopping and Starting a Service.
For this exercise I will be using both the Stop-Service
and Start-Service cmdlets. To demonstrate, I have chosen
the "Computer Browser" service for this example. The current status of the
Computer Browser service is "Started" and the "Status Type" is "Automatic."
For this exercise it is important that you choose a service that has a
status type of either automatic or manual. If you choose a service with a
status type of disabled, this exercise will not work.
The following syntax stops a service:Stop-Service [-name] or Stop-Service [-displayName]. This is not the complete
syntax for the Stop-Service cmdlet. If you want to see the full syntax, use
the Get-Help cmdlet as discussed earlier. To begin, let's show the status
of the Browser Service. Then Stop it using the Stop-Service cmdlet. Lastly
check the status. Type the following cmdlets:
Get-Service -name Browser <enter>
Stop-Service -name Browser <enter>
Get-Service -name Browser <enter>
Image 2.6
Note: When you run the Stop-Service cmdlet there is no indication that
the service has actually stopped. This is why I ran the Get-Service
command to verify the status changed to "Stopped."
We should see the same change in the Services.msc GUI. In the GUI a Status
of "Blank" means "Stopped."
Image 2.7
The following syntax will start a service:Start-Service [-name] or Start-Service [-displayName]. Look familiar? Again, let's
check the status, start the service, and verify the status has changed.
Get-Service -name Browser <enter>
Start-Service -name Browser <enter>
Get-Service -name Browser <enter>
Image 2.8
Check the GUI, the status of Browser should be "Started" (make sure to
refresh the view).
This exercise should give you an indication of the benefits of using
PowerShell. With just a couple of cmdlets we were able to stop and start a
service. Traditionally, an Administrator would launch the GUI, select the
service, and then either stop or start it. Doesn't seem like a big deal
until you are asked to stop a service on multiple computers. Through
PowerShell Scripting you will be able to start, stop, and change status
types of a service on multiple computers without much effort. Write a
script, run-it, and then kick you feet up on the desk.
This tutorial has introduced the PowerShell naming convention, cmdlets,
getting help, and an example of using the Service cmdlet. As stated before,
there are over a hundred cmdlets in PowerShell. This should be enough to
keep you busy for awhile. See you in the next tutorial where we will be
covering PowerShell Aliases.