Chapter 10 (2)

PowerShell Scripting Basics

Eliminating PowerShellISE Process

  • To filter out the PowerShellISE process in a script, use the Get-Process cmdlet combined with the Where-Object cmdlet to select processes where the process name is not equal to PowerShellISE.

    • Example code:

      Get-Process | Where-Object {$_.ProcessName -ne "PowerShell_ISE"} | Sort-Object -Property PM -Descending
    • The $_ is a special variable that represents the current object in the pipeline.

Selecting Top 10 Memory Values

  • After filtering the processes, the next step is to select the top 10 processes based on their memory property (PM). This can be accomplished by appending the Select-Object cmdlet to your current command.

    • Example code:

      Get-Process | Where-Object {$_.ProcessName -ne "PowerShell_ISE"} | Sort-Object -Property PM -Descending | Select-Object -First 10
    • This will create a report of the ten processes using the most physical memory.

Formatting Output

  • The Format-Table cmdlet is crucial for controlling how output properties are displayed. By using the Property parameter, specific properties can be chosen and displayed in a controlled format.

    • Example code:

      Get-Process | Where-Object {$_.ProcessName -ne "PowerShell_ISE"} | Sort-Object -Property PM -Descending | Select-Object -First 10 | Format-Table -Property ProcessName, @{Label="PM (MB)"; Expression={$_.PM / 1MB}}
    • This converts the memory values from bytes to megabytes, enhancing readability.

Troubleshooting PowerShell Scripts

  • When building scripts in PowerShell, encountering errors is common. Here are some tips to troubleshoot effectively:

Clear Typing
  • Clear typing enhances readability and helps avoid character misinterpretation. Following conventions such as capitalizing the first letter of each word and ensuring consistent spacings between cmdlets and parameters improves script clarity.

    • For instance, instead of writing getprocess, use Get-Process.

Interpreting Errors
  • PowerShell will indicate parsing errors by displaying red text. Understanding the error messages can help identify the problem's location and nature. For example, if the output shows a part of the command underlined, it indicates a typo or syntax error.

Debugging with Script Level Tracing
  • Enabling script level tracing allows for monitoring commands as they are executed. This can be set using the Set-PSDebug cmdlet with varied levels of output:

    • 0 turns off tracing

    • 1 traces each command without variable assignments

    • 2 traces each command including variable assignments

Creating Script Files on CentOS 7

  • When writing shell scripts on CentOS, begin by opening a text editor and ensuring the script begins with a header line indicating the shell type (e.g., #!/bin/bash). Store executable permissions with the chmod command.

Script Parameters
  • To pass parameters to scripts, use placeholders like $0, $1, etc. Example usage when copying files:

    • cp /path/to/source $1 /path/to/destination $2

Conditional Execution in Scripts

  • Utilize conditional structures like if, while, and for to control the flow of execution within scripts.

    • If statement:

      if [ condition ]; then
      # commands
      fi
    • While loop:

      while [ condition ]; do
      # commands
      done
    • For loop:

      for i in {1..10}; do
      # commands
      done

Chapter Summary

  • PowerShell ISE provides a conducive environment for script writing and testing. Functions like Where-Object, Select-Object, Sort-Object, and Format-Table are essential for data handling.

  • Scripting practices in both PowerShell and CentOS lead to effective automation of tasks, while also emphasizing the importance of debugging and clear syntax to enhance functionality and reduce errors.

robot