MS WINDOWS
POWER SHELL
CSE 535 Operating Systems
What is Power Shell
PowerShell is Microsoft Windows’
object-oriented programming language
interactive command line shell
PowerShell designed to
◦
automate system tasks:
◦
such as batch processing
create systems management tools
◦
for commonly implemented processes
What is it for?
The PowerShell language is similar to Perl.
PowerShell includes
◦
more than 130 standard command line tools
◦ for functions that formerly required users
to create scripts in VB, VBScript or C#.
Where to Download?
http://www.microsoft.com/downloads/detail
s.aspx?FamilyID=50633a1f-a665-425d923c-1a269f8ac084&displayLang=en
Windows PowerShell Cmdlet
Cmdlet (or Command-let)
◦
which .NET objects can be accessed
◦
A Cmdlet name consists of two elements:
from the command line.
a verb and a noun
Example:
◦
one of the most useful Cmdlets:
Get-help
Automating Tasks
PowerShell offers ways
◦
Cmdlets:
◦
◦
combinations of cmdlets and associated logic.
Executables:
◦
very small .NET classes
appear as system commands
Scripts:
◦
to automate tasks:
standalone tools
Instantiation of standard .NET classes.
Integrating with .NET
PowerShell
integrates with the .NET environment
Can be embedded within other applications.
Over a hundred cmdlets are included
to be used separately
or combined with others
to automate more complex tasks
Users can
also create and share cmdlets.
Abbreviations for Cmdlets
there are abbreviations
◦
for some of the Cmdlets, for example:
Get-Process
Can also be typed as:
ps
Linux-similar Cmdlets
“ps”
◦
◦
is command familiar to Linux users
as the command
there are a number of
◦
to view details about currently running processes.
other Linux-PowerShell parallels:
“man” is the same as “Get-Help –detailed”
“ls” is the same as “Get-ChildItem”
“pwd” is the same as “Get-Location”
Understanding Aliases
PowerShell commands are usually long.
◦
example: Get-ChildItem.
However, PowerShell has aliases.
◦
◦
Example:
“dir” is the same as “Get-ChildItem”
get-alias
get-alias dir
Obtaining PowerShell
PowerShell is installed
in Windows Server 2008
is also part of Windows 7,
it does not come ready loaded with XP or
Vista!
Running PowerShell
Once PowerShell has been installed
◦
Click on “Start”, “Run”
◦
and then type in “powershell”
Start a new command prompt
◦
then it can be run in two ways:
and then type in “powershell”
the user can start using
◦
the PowerShell commands.
Cmdl: ps
One very useful Cmdlet is ps
◦
or get-process
lists the currently running processes
◦
◦
the number of memory page (frame)s
the percentage of processor usage
Pipe and Sort
The list is sorted alphabetically
◦
You can sort WS field
◦
according to the process name.
According to the memory usage
To do this the user
“pipes” the output of ps
◦ to a second Cmdlet “sort-object”
◦
ps | sort-object WS –descending
Sorting wrt Memory Usage
Filtering & Splitting the Commands
User can filter that
◦
the “powershell” not to be seen in output
Add
a filter
piped Cmdlets can be
◦
split over multiple lines:
ps | where-object –FilterScript
{$_.processname -ne "powershell"}
| sort-object WS –descending
Filtered
To concatenation symbol
The concatenation symbol (>)
◦
◦
◦
will send the result output file
after the information has been converted to HTML
so that it can then be viewed in a web browser:
ps |
where-object -FilterScript
{$_.processname -ne "powershell"} |
sort-object WS –descending |
convertto-html -property Name,
WS > ps.html
Displaying in Browser
Find all the processes on a computer
that started today
Get-Process | Where {$_.starttime -ge
[datetime]::today}
Find the processes that use more
than 1000 MB of memory and kill
them
get-process | where-object { $_.WS -gt
1000MB } | stop-process -whatif
Calculate the number of bytes in the
files in a directory
get-childitem | measure-object -property
length -sum
Defining Variables
PS C:\> $a = 5
PS C:\> $a
5
PS C:\>
Determine Variable
PS C:\> $a.GetType()
Piped Commands
dir | sort LastWriteTime | more
PS C:\WINDOWS> $a = dir | sort
LastWriteTime
PS C:\WINDOWS> $a[0]
PS C:\WINDOWS> $a[1]