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 theWhere-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 theProperty
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
, useGet-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 thechmod
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
, andfor
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
, andFormat-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.