PowerShell/docs/learning-powerShell/powershell-beginners-guide.md
2016-07-12 18:56:36 -07:00

9.6 KiB
Raw Blame History

PowerShell Beginners Guide

If you are new to PowerShell, this document will walk you through a few examples to give you some basic ideas of PowerShell. We recommend that you open a PowerShell console/session and type along with the instructions in this document to get most out of this exercise.

Launch PowerShell Console/Session

First you need to launch a PowerShell session by following the Installing PowerShell Guide.

Getting Familiar with PowerShell Commands

As mentioned above PowerShell commands is designed to have Verb-Noun structure, for instance Get-Process, Set-Location, Clear-Host, etc. Lets exercise some of the basic PowerShell commands also known as cmdlets.

1. Get-Process: displays the processes running on your system.

By default, you will get data back similar to the following:

PS C:\>Get-Process

Handles   NPM(K)    PM(K)     WS(K)    VM(M)    CPU(s)  Id   ProcessName
-------  ------     -----     -----    -----    ------  --  -----------
    147      11     2108       9316    ...82     0.02   12    notepad
    174      12     4276       1460    ...53     3.56   309   cmd
    121       9     1580       3096    ...85     3.94   8620  svchost
   2168     374   448940     321504      820   867.39   1209  iexplore


Only interested in the instance of notepad that are running on your computer? Try this:

PS C:\> Get-Process -Name notepad

Handles   NPM(K)    PM(K)     WS(K)   VM(M)    CPU(s)   Id   ProcessName
-------  ------     -----     -----   -----    ------   --  -----------
    147      11     2108       9316    ...82     0.02   12    notepad

Want to get back more than one process? Then just specify process names, separating with commas. For example,

PS C:\> Get-Process -Name notepad, iexplore
Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id  ProcessName
-------  ------    -----      ----- -----   ------     --  -----------
   1753     247   418220     194960   991   385.97   1748   iexplore
    144      11     2152       9320 ...82     0.08  30004   notepad


2. Clear-Host: Clears the display in the command window

PS C:\> Get-Process
PS C:\> Clear-Host

Type too much just for clearing the screen? Here is how the alias can help.

3. Get-Alias: Improves the user experience by using the Cmdlet aliases

To find the available aliases, you can type below cmdlet:

PS C:\> Get-Alias

CommandType     Name
-----------     ----

Alias           cat -> Get-Content
Alias           cd -> Set-Location
Alias           cls -> Clear-Host
Alias           cp -> Copy-Item
Alias           clv -> Clear-Variable
Alias           gmo -> Get-Module
Alias           man -> help
Alias           rm -> Remove-Item
Alias           ls -> Get-ChildItem
Alias           type -> Get-Content


As you can see "cls" is an alias of Clear-Host. Now try it:

PS C:\> Get-Process
PS C:\> cls

4. cd - Set-Location: change your current working directory

PS C:\> Set-Location C:\test
PS C:\test>

5. ls or dir - Get-ChildItem: list all items in the specified location

Get all files under the current directory:

PS C:\test> Get-ChildItem

Get all files under the current directory as well as its subdirectories:
PS C:\test> dir -Recurse

List all files with file extension "txt".

PS C:\test> ls Path *.txt -Recurse -Force

6. New-Item: Create a file

An empty file is created if you type the following:
PS C:\test> New-Item -Path c:\test\test.txt


    Directory: C:\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         7/7/2016   7:17 PM              0 test.txt

You can use the -value parameter to add some data to your file. For example, the following command adds the phrase "Hello World" as a file content to the test.txt. Because the test.txt file exists already, we use -force parameter to replace the existing content.

PS C:\test> New-Item -Path c:\test\test.txt -Value "Hello World!" -force

    Directory: C:\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         7/7/2016   7:19 PM             12 test.txt

There are other ways to add some data to a file, for example, you can use Set-Content to set the file contents:

PS C:\test>Set-Content -Path c:\test\test.txt -Value "Hello World too!"

Or simply use ">>" as below:

# create an empty file
"" > empty.txt  

# set "hello world!!!" as content of text.txt file
"hello world!!!" > test.txt

The pound sign (#) above is used for comments in PowerShell.

7. type, cat - Get-Content: get the content of an item

PS C:\>Get-Content -Path "C:\Test\test.txt"
PS C:\>type -Path "C:\Test\test.txt"

Hello World!

8. rm, del - Remove-Item: delete a file or folder

This cmdlet will delete the file c:\test\test.txt:

PS C:\test> Remove-Item c:\test\test.txt

9. Exit: - to exit the PowerShell session, type "exit"

PS C:\test> exit

Need Help?

The most important command in PowerShell is possibly the Get-Help, which allows you to quickly learn PowerShell without having to surfing around the Internet. The Get-Help cmdlet also shows you how PowerShell commands work with examples.

PS C:>Get-Help

You can use this cmdlet to get help with any PowerShell commands.

PS C:>Get-Help -Name Get-Process

It shows the syntax and other technical information of the Get-Process cmdlet.

PS C:>Get-Help -Name Get-Process -Examples

It displays the examples how to use the Get-Process cmdlet. If you use -full parameter, i.e., "Get-Help -Name Get-Process -Full", it will display more technical information.

Discover All Commands Available on Your System

You want to discover what PowerShell cmdlets available on your system. Simple, just run "Get-Command" as below.

PS C:> Get-Command

If you want to know whether a particular cmdlet exists on your system, you can do something like below:

PS C:> Get-Command Get-Process

If you want to know the syntax of Get-Process cmdlet, type

PS C:> Get-Command Get-Process -Syntax

If you want to know how to sue the get-process, type

PS C:> Get-Help Get-Process -example

PowerShell Pipeline '|'

Sometimes when you run Get-ChildItem or "dir", you want to get a list of files in a descending order. To archive that, type:

PS C:\> dir | sort -Descending

Say you want to get the largest file in a directory

PS C:\> dir | sort -Property length -Descending | Select-Object -First 1


    Directory: C:\


Mode                LastWriteTime       Length  Name
----                -------------       ------  ----
-a----        5/16/2016   1:15 PM        32972  test.log

How to Create and Run PowerShell scripts

  • You can use ISE, VS Code, or any favorite editor to create a PowerShell script and save the script with a .ps1 file extension (helloworld.ps1 in the example)
  • To run the script, cd to your current folder and type .\helloworld.ps1

See [Running PowerShell Scripts Is as Easy as 1-2-3] run-ps for more details.

More Reading

Books & eBooks & Blogs & Tutorials