Using PowerShell pipeline

Exercise 1: Selecting, sorting, and displaying data using Powershell Binding

Task 1: Display the current day of the year

  1. On LON-CL1, select Start, and then enter powersh.
  2. In the search results, right-click Windows PowerShell or activate its context menu, and then select Run as administrator.
  3. In the Administrator: Windows PowerShell window, enter the following command, and then press the Enter key:

    help *date* 
    

    Note: Notice the Get-Date command.

  4. In the console, enter the following command, to check the type of Pipeline Binding accepted by the cmdlet:

    Get-Help Get-Date -Parameter * | Where-Object { $_.PipelineInput -match "true" } 
    

    Note: Notice the Accept pipeline input and Parameter set name values.

  5. In the console, enter the following command, and then press the Enter key:

    Get-Date
    
  6. In the console, enter the following command, and then press the Enter key:

    Get-Date | Get-Member
    

    Note: Notice how the (|) allows the output of one cmdlet to be passed as input to another. Notice the DayOfYear property.

  7. In the console, enter the following command, and then press the Enter key:

    Get-Date | Select-Object –Property DayOfYear
    
  8. In the console, enter the following command, and then press the Enter key:

    Get-Date | Select-Object -Property DayOfYear | fl
    

Task 2: Display information about installed hotfixes

  1. In the console, enter the following command, and then press the Enter key:

    Get-Command *hotfix* 
    

    Note: Notice the Get-Hotfix command.

  2. In the console, enter the following command, to check the type of Pipeline Binding accepted by the cmdlet:

    Get-Help Get-Hotfix -Parameter * | Where-Object { $_.PipelineInput -match "true" } 
    

    Note: Notice the Accept pipeline input and Parameter set name values.

  3. In the console, enter the following command, and then press the Enter key:

    Get-Hotfix | Get-Member 
    

    Note: The properties of the Hotfix object display. If needed, run Get-Hotfix to review some of the values that typically display in those properties.

  4. In the console, enter the following command, and then press the Enter key:

     Get-Hotfix | Select-Object –Property HotFixID,InstalledOn,InstalledBy
    
  5. In the console, enter the following command, and then press the Enter key:

    Get-Hotfix | Select-Object –Property HotFixID,@{n='HotFixAge';e={(New-TimeSpan -Start $PSItem.InstalledOn).Days}},InstalledBy
    

Task 3: Display a list of available scopes from the DHCP server

  1. In the console, enter the following command, and then press the Enter key:

    help *scope* 
    

    Note: Notice the Get-DHCPServerv4Scope command.

  2. In the console, enter the following command, and then press the Enter key:

    Help Get-DHCPServerv4Scope –ShowWindow 
    

    Note: Notice the available parameters.

  3. Close the Get-DHCPServerv4Scope window.
  4. In the console, enter the following command, and then press the Enter key:

    Get-DHCPServerv4Scope –ComputerName LON-DC1
    
  5. In the console, enter the following command, and then press the Enter key:

    Get-DHCPServerv4Scope –ComputerName LON-DC1 | Select-Object –Property ScopeId,SubnetMask,Name | fl
    

Task 4: Display a sorted list of enabled Windows Firewall rules

  1. In the console, enter the following command, and then press the Enter key:

       help *rule* 
    

    Note: Notice the Get-NetFirewallRule command.

  2. In the console, enter the following command, and then press the Enter key:

       Get-NetFirewallRule 
    
  3. In the console, enter the following command, and then press the Enter key:

       Help Get-NetFirewallRule –ShowWindow
    
  4. Close the Get-NetFirewallRule Help window.
  5. In the console, enter the following command, and then press the Enter key:

       Get-NetFirewallRule –Enabled True
    
    
  6. In the console, enter the following command, and then press the Enter key:

       Get-NetFirewallRule –Enabled True | Format-Table -wrap
    
  7. In the console, enter the following command, and then press the Enter key:

       Get-NetFirewallRule –Enabled True | Select-Object –Property DisplayName,Profile,Direction,Action | Sort-Object –Property Profile, DisplayName | ft -GroupBy Profile
    

Task 5: Display a sorted list of network neighbors

  1. In the console, enter the following command, and then press the Enter key:

       help *neighbor*  
    

    Note: Notice the Get-NetNeighbor command.

  2. In the console, enter the following command, and then press the Enter key:

       help Get-NetNeighbor –ShowWindow
    
  3. Close the Get-NetNeighbor Help window.
  4. In the console, enter the following command, and then press the Enter key:

       Get-NetNeighbor
    
  5. In the console, enter the following command, and then press the Enter key:

       Get-NetNeighbor | Sort-Object –Property State
    
  6. In the console, enter the following command, and then press the Enter key:

       Get-NetNeighbor | Sort-Object –Property State | Select-Object –Property IPAddress,State | Format-Wide -GroupBy State -AutoSize
    

Task 6: Display information from the DNS name resolution cache

  1. In the console, enter the following command, and then press the Enter key:

       Test-NetConnection LON-DC1
    
  2. In the console, enter the following command, and then press the Enter key:

       help *cache* 
    

    Note: Notice the Get-DnsClientCache command.

  3. In the console, enter the following command, and then press the Enter key:

       Get-DnsClientCache
    
  4. In the console, enter the following command, and then press the Enter key:

       Get-DnsClientCache | Select Name,Type,TimeToLive | Sort Name | Format-List
    

    Note: Notice that the Type data doesn’t return what you might expect; for example, A and CNAME. Instead, it returns raw numerical data. Each number maps directly to a record type, and you can filter for those types when you know the map: 1= A, 5 = CNAME, and so on. Later in this module, you’ll learn how to add more filters to determine the numbers and their corresponding record types. You’ll notice a similar situation for other returned data, such as Status data.

  5. Close all open windows.

Exercise 1 results

After completing this exercise, you should have produced several custom reports that contain management information from your environment.

Exercise 2: Filtering objects

Task 1: Display a list of all the users in the Users container of Active Directory

  1. On LON-CL1, select Start, and then enter PowerShell.
  2. In the search results, right-click Windows PowerShell or activate its context menu, and then select Run as administrator.
  3. In the Administrator: Windows PowerShell window, enter the following command, and then press the Enter key:

    help *user*
    

    Note: Notice the Get-ADUser command.

  4. In the console, enter the following command, and then press the Enter key:

    Get-Help Get-ADUser –ShowWindow
    

    Note: Notice that the -Filter parameter is mandatory. Review the examples for the command.

  5. Close the Get-ADUser Help window.
  6. In the console, enter the following command, and then press the Enter key:

    Get-ADUser –Filter * | ft
    
  7. In the console, enter the following command, and then press the Enter key:

    Get-ADUser –Filter * -SearchBase "cn=Users,dc=Adatum,dc=com" | ft
    

Task 2: Create a report displaying the Security event log entries that have the event ID 4624

  1. In the Administrator: Windows PowerShell window, enter the following command, and then press the Enter key:

    Get-EventLog -LogName Security | 
    Where EventID -eq 4624 | Measure-Object | fw
    
  2. In the console, enter the following command and then press the Enter key:

    Get-EventLog -LogName Security | 
    Where EventID -eq 4624 | 
    Select TimeWritten,EventID,Message
    
  3. In the console, enter the following command, and then press the Enter key:

    Get-EventLog -LogName Security | 
    Where EventID -eq 4624 | 
    Select TimeWritten,EventID,Message -Last 10 | fl
    

Task 3: Display a list of the encryption certificates installed on the computer

  1. In the Administrator: Windows PowerShell window, enter the following command, and then press the Enter key:

    Get-ChildItem -Path CERT: -Recurse
    
  2. In the console, enter the following command, and then press the Enter key:

    Get-ChildItem -Path CERT: -Recurse | 
    Get-Member
    
  3. In the console window, enter the following command, and then press the Enter key.

    Get-ChildItem -Path CERT: -Recurse | 
    Where HasPrivateKey -eq $False | Select-Object -Property FriendlyName,Issuer | fl
    

    or:

    Get-ChildItem -Path CERT: -Recurse | 
    Where { $PSItem.HasPrivateKey -eq $False } | Select-Object -Property FriendlyName,Issuer | fl
    
  4. In the console window, enter the following command, and then press the Enter key.

    Get-ChildItem -Path CERT: -Recurse | 
    Where { $PSItem.HasPrivateKey -eq $False -and $PSItem.NotAfter -gt (Get-Date) -and $PSItem.NotBefore -lt (Get-Date) } | Select-Object -Property NotBefore,NotAfter, FriendlyName,Issuer | ft -wrap
    

Task 4: Create a report of the disk volumes that are running low on space

  1. In the Administrator: Windows PowerShell window, enter the following command, and then press the Enter key:

    Get-Volume
    

    Note: If you didn’t know the command name, you could have run Help *volume* to discover it.

  2. In the console, enter the following command, and then press the Enter key:

    Get-Volume | Get-Member
    

    Note: Notice the SizeRemaining property.

  3. In the console, enter the following command, and then press the Enter key:

    Get-Volume | Where-Object { $PSItem.SizeRemaining -gt 0 } | fl
    
  4. In the console, enter the following command, and then press the Enter key:

    Get-Volume | Where-Object { $PSItem.SizeRemaining -gt 0 -and $PSItem.SizeRemaining / $PSItem.Size -lt .99 }| Select-Object DriveLetter, @{n='Size';e={'{0:N2}' -f ($PSItem.Size/1MB)}}
    
  5. In the console, enter the following command, and then press the Enter key:

    Get-Volume | Where-Object { $PSItem.SizeRemaining -gt 0 -and $PSItem.SizeRemaining / $PSItem.Size -lt .1 }
    

    Note: This command might not produce any output on your lab computer if the computer has more than 10 percent free space on each of its volumes.

Task 5: Create a report that displays specified Control Panel items

  1. In the Administrator: Windows PowerShell window, enter the following command, and then press the Enter key:

    help *control* 
    

    Note: Notice the Get-ControlPanelItem command.

  2. In the console, enter the following command, and then press the Enter key:

    Get-ControlPanelItem 
    
  3. In the console, enter the following command, and then press the Enter key:

    Get-ControlPanelItem –Category 'System and Security' | Sort Name
    

    Note: Notice that you don’t have to use Where-Object.

  4. In the console, enter the following command, and then press the Enter key:

    Get-ControlPanelItem -Category 'System and Security' | Where-Object -FilterScript {-not ($PSItem.Category -notlike '*System and Security*')} | Sort Name
    

Exercise 2 results

After completing this exercise, you should have used filtering to produce lists of management information that include only specified data and elements.