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]