1 / 44

WINDOWS POWERSHELL

WINDOWS POWERSHELL. Presenters: Winfred Wangeci Jignash Reddy. What is Windows Power Shell?. It is Microsoft's new task-based command-line shell and scripting language designed especially for system administration.

Download Presentation

WINDOWS POWERSHELL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WINDOWS POWERSHELL Presenters: Winfred Wangeci Jignash Reddy

  2. What is Windows Power Shell? • It is Microsoft's new task-based command-line shell and scripting language designed especially for system administration. • It helps Information Technology Professionals and PowerShell users control and automate the Administration of the Windows operating system and applications that run on Windows.

  3. Why use Windows Powershell? • To address recurring needs (Viewing the logged Members ) • To run script(s) as a scheduled task (Running a command when user login or logoff) • To store and share ideas behind the scripts (Creating and modifying files and folders) • Automate repetitive tasks (Automate the user session time)

  4. Windows Scripting Languages • Presently, Microsoft Windows programmers have several options when it comes to scripting. They can use: • MS-DOS (or CMD) to create simple batch files • VBScript for more complex programming • PowerShell to make the most of the .NET framework • With one of the above or a combination of all, a programmer gets complete control of all of the objects on a Windows computer.

  5. Windows Powershell Cmdlets • A cmdlet is a lightweight command that is used in the Windows PowerShell environment. • Cmdlets follow a verb-noun naming pattern. Examples of verbs: get, set, new Examples of nouns: service, item, date

  6. Sample Powershell Cmdlets • Below are sample Cmdlets following the verb-noun naming pattern: PS C:\>get-childitem C:\ (Gets the items and child items in one or more specified locations.) PS C:\>get-service (Retrieve information about the services installed on your computer.) PS C:\>set-location D:\ (It enables you to specify a new working location.) PS C:\> set-location “c:\my documents”

  7. 5 key powershell commands • Get-Help(get-help set-* gives all cmdlets that start with Set-.) • Get-Command (you’ll get back a list of all the Windows PowerShell cmdlets) • Get-Member(will enumerate the properties and methods of that object.) • Get-Psdrive (Gets the Windows PowerShell drives in the current session) • Format-List(each property is displayed on a separate line)

  8. Showing processes

  9. Getting help on commands

  10. Displaying desktop items

  11. Stopping a process(es)

  12. How Cmdlets differ from commands They differ from commands used in other command-shell environments in that: • They are instances of .NET Framework classes; they are not stand-alone executables. • They can be created from as few as a dozen lines of code. • They do not usually do their own parsing, error presentation, or output formatting. All these are handled by the Windows PowerShell runtime. • They process input objects from the pipeline rather than from streams of text, and cmdlets typically deliver objects as output to the pipeline. • They are record-oriented because they process a single object at a time.

  13. PowerShell Aliases • An alias is an alternative name assigned to a Cmdlet.  • Aliases allow users to quickly interact with the shell. • The Cmdlet get-alias is used to list all built-in aliases as shown in the diagram on the next slide:

  14. Powershell Providers • They are .NET programs used to provide easy access to information external to the shell environment in order for the users to view it and manage it. • To obtain a listing of all the providers, the Get-PSProvider cmdlet is used. • To work with specific providers, use the set-location cmdlet then specify the provider drive.

  15. Powershell Providers • There are seven types of providers namely: • Alias - Provides access to the windows PowerShell aliases and their values Get-PSProvider Sl Alias:\ GCI | where-object {$_.name –like “s*”} • Environment - Provides access to the Windows environment variables. • FileSystem  - Provides access to files and directories. • Function - Provides access to the functions defined in Windows PowerShell.

  16. Powershell Providers cont…. • Registry Provides access to the system registry keys and values. • Variable Provides access to Windows PowerShell variables and their values. • Certificate Provides read-only access to certificate stores and certificates.

  17. Sample powershell scripts • To address recurring problems DirectoryListWithArguments.ps1 foreach ($i in $args) {Get-ChildItem $i | Where-Object {$_.length -gt 1000} | Sort-Object -property name}

  18. Sample powershell scripts • To run the script as a scheduled task ListProcessesSortResults.ps1 $args = "localhost","loopback","127.0.0.1" foreach ($i in $args) {$strFile = "c:\mytest\"+ $i +"Processes.txt" Write-Host "Testing" $i "please wait ..."; Get-WmiObject -computername $i -class win32_process | Select-Object name, processID, Priority, ThreadCount, PageFaults, PageFileUsage | Where-Object {!$_.processID -eq 0} | Sort-Object -property name | Format-Table | Out-File $strFile}

  19. Sample powershell scripts 3. To store and share both the “secret commands” and the ideas behind the scripts AccountsWithNoRequiredPassword.ps1 $args = "localhost" foreach ($i in $args) {Write-Host "Connecting to" $i "please wait ..."; Get-WmiObject -computername $i -class win32_UserAccount | Select-Object Name, Disabled, PasswordRequired, SID, SIDType | Where-Object {$_.PasswordRequired -eq 0} | Sort-Object -property name | Write-Host }

  20. Enabling script support Scripting support is disabled by default in Windows PowerShell. Running a script when policy is not set generates an error message that must be fixed to allow script execution.

  21. Script execution policy levels • There are four levels of execution policy: • Restricted Will not run scripts or configuration files • AllSigned All scripts and configuration files must be signed by a trusted publisher • RemoteSigned All scripts and configuration files downloaded from the internet must be signed by a trusted publisher • Unrestricted All scripts and configuration files will run

  22. Setting script execution policy • Use the Get-ExecutionPolicy cmdlet to retrieve the current effective script execution policy. • Use the Set-ExecutionPolicy cmdlet to change the script execution policy to unrestricted as shown below: Set-ExecutionPolicy unrestricted

  23. Running windows powershell scripts • Running a script can be done either within or outside PowerShell. • Running the script within PowerShell requires the following steps: • Type the full path to the script • Include the name of the script • Ensure you include the PS1 extension C:\mytest\RetrieveAndSortServiceState.PS1

  24. Running windows powershell scripts • Running scripts outside PowerShell requires the following steps: • Type the full path to the script • Include the name of the script • Ensure you include the PS1 extension • Feed this to the PowerShell.exe program • Use the –noexit argument to keep the PowerShell console after script execution Powershell –noexit C:\mytest\RetrieveAndSortServiceState.PS1

  25. Powershell loops Powershell evaluates the condition at the start of each cycle and if it’s true, then it executes the command block as shown in the loop below: $wmi = get-wmiObject win32_processor if ($wmi.Architecture -eq 0) {"This is an x86 computer"} elseif($wmi.architecture -eq 1) {"This is an MIPS computer"} elseif($wmi.architecture -eq 2) {"This is an Alapha computer"} elseif($wmi.architecture -eq 3) {"This is an PowerPC computer"} elseif($wmi.architecture -eq 6) {"This is an IPF computer"} elseif($wmi.architecture -eq 9) {"This is an x64 computer"} else {$wmi.architecture + " is not a cpu type I am familiar with"} "Current clockspeed is : " + $wmi.CurrentClockSpeed + " MHZ" "Max clockspeed is : " + $wmi.MaxClockSpeed + " MHZ" "Current load percentage is: " + $wmi.LoadPercentage + " Percent" "The L2 cache size is: " + $wmi.L2CacheSize + " KB"

  26. Switches • They enable users to write a script that can choose from a series of options without writing a long series of If statements as shown below: $wmi = get-wmiobject win32_computersystem "computer " + $wmi.name + " is: " switch ($wmi.domainrole) { 0 {"`t Stand alone workstation"} 1 {"`t Member workstation"} 2 {"`t Stand alone server"} 3 {"`t Member server"} 4 {"`t Back up domain controller"} 5 {"`t Primary domain controller"} default {"`t The role can not be determined"} }

  27. Creating new items using Scripts • Files and Folders New-Item is a quick and easy way to create a new file or folder on your computer.  Creating a file: New-Item c:\scripts\new_file.txt -type file Creating a folder: New-Item c:\scripts\Windows PowerShell -type directory

  28. Creating multiple folders $intFolders = 10 $intPad $i = 1 New-Variable -Name strPrefix -Value "testFolder" -Option constant do { if ($i -lt 10) {$intPad=0 new-item -path c:\mytest -name $strPrefix$intPad$i -type directory} else {new-item -path c:\mytest -name $strPrefix$i -type directory} $i++ }until ($i -eq $intFolders+1)

  29. Deleting multiple folders $intFolders = 10 $intPad $i = 1 New-Variable -Name strPrefix -Value "testFolder" -Option constant do { if ($i -lt 10) {$intPad=0 Remove-item -path c:\mytest\$strPrefix$intPad$i} else {Remove-item -path c:\mytest\$strPrefix$i} $i++ }until ($i -eq $intFolders+1)

  30. Pipelining • One of the most powerful and possibly confusing aspects of PowerShell. • The output of one program can be the input to another • Pipelining is passing data and objects from one cmdlet to another in a very robust fashion. • A | B | C meaning the output of A goes to B, and the output of B goes to C.

  31. Pipelining Example PS C:\> Get-Process | where { $_.handlecount -gt 400 } | Format-List This example is actually executing three cmdlets • The first, Get-Process, returns a list of all running processes • The second, Where {..} will return the conditioned value which handlecount is greater than 400. • Finally the Format-list will display the results in Alphabetic order

  32. Pipelining Example Output PS C:\> Get-Process | where { $_.handlecount -gt 400 } | Format-List ProcessName : csrss Id : 1080 ProcessName : explorer Id : 1952 ProcessName : Groove Id : 2656 ProcessName : inetinfo Id : 1524

  33. Sorting • The sort-object cmdlet is used to produce a listing of items in ascending/descending order Get-EventLog system -newest 5 | Sort-Object eventid Produces the output below:

  34. Managing Exchange 2007 • Windows PowerShell -129 Commands Get-Command • Exchange PowerShell-394 Commands Get-EXCommand

  35. Command Syntax • New-Mailbox • Get-Mailbox • Set-Mailbox • Move-Mailbox • Remove-Mailbox

  36. Mailbox Command Syntax • Count Mailbox in organizations (Get –mailbox).count • Getting all properties for a specific user Get-Mailbox | where {$_.Display Name -eq “DR kesh"} | format-list • List of all mailboxes in organization Get-Mailbox -ResultSize unlimited

  37. Command for creating Users $UserName = $_.UserName    $newUser = $container.Create("User", "cn=" + $UserName)    $newUser.Put("sAMAccountName", $UserName)    $newUser.SetInfo()    $newUser.psbase.InvokeSet('AccountDisabled', $false)    $newUser.SetInfo()    $newUser.SetPassword("P@55w0rd“) • Making changes to users • Apply policies • Assign to groups • Enable or disable features • Changing attributes • Moving mailboxes ....

  38. Setting up your ExchangePowerShell learning enviroment • Prerequisites • Supported OS • Microsoft Windows Server 2003 R2, or • Microsoft Windows Server 2003 with SP1 or SP2 • Windows XP with Service Pack 2 • Windows Vista • Windows 2008 • The Microsoft .NET Framework 2.0 (2.0.50727) • Powershell • Exchange 2007

  39. Windows Management Instrumentation(WMI) Model • It is a hierarchical namespace, in which the layers build on one another like a Lightweight Directory Access Protocol (LDAP) directory used in Active Directory, or the file system structure on a hard disk drive. • WMI can be used to: report on drive configuration, report on available memory both physical and virtual, back up the event log, modify registry, schedule tasks, share folders, switch from a static to a dynamic IP address. • The WMI model has three sections namely: • Resources • Infrastructure • Consumers

  40. Working with WMI classes • To obtain a listing of WMI classes, use the Get-WmiObject cmdlet and specify the list argument as shown below: $strComputer = "." $wmiNS = "\root\cimv2" $strUsr ="" #Blank for current security. Domain\Username $strPWD = "" #Blank for current security. $strLocl = "MS_409" #US English. Can leave blank for current language $strAuth = "" #if specify domain in strUsr this must be blank $iFlag = "0" #only two values allowed: 0 and 128. $objLocator = New-Object -comobject "WbemScripting.SWbemLocator" $objWMIService = $objLocator.ConnectServer($strComputer, ` $wmiNS, $strUsr, $strPWD, $strLocl, $strAuth, $iFLag) $colItems = $objWMIService.subClassesOf() Write-Host "There are: " $colItems.count " classes in $wmiNS" foreach ($objItem In $colItems) { $objItem.path_.class }

  41. References • Wilson, E. (2007). Microsoft Windows PowerShell step by step. Washington: Microsoft Press. • Tomsho, G. (2010). MCTS guide to Microsoft Windows Server 2008 Active Directory configuration: Exam 70-640. Boston, MA: Course Technology/Cengage Learning. • Schwichtenberg, H. (2008). Essential PowerShell. The Addison-Wesley Microsoft technology series. Upper Saddle River, NJ: Addison-Wesley.

More Related