Ezine 209 PowerShell -ErrorAction SilentlyContinue
PowerShell -ErrorAction SilentlyContinue
If a PowerShell script halts, or a
portion of the code does not work, what would you like to happen next? One popular solution is to tell the script to
silently continue. Windows PowerShell -ErrorAction SilentlyContinue
♣
# PowerShell -ErrorAction SilentlyContinue example
Clear-Host
$SrvName = "Printer Spooler" $Service =
Get-Service -display $SrvName -ErrorAction
SilentlyContinue if (-not $Service) {$SrvName + " is
NOT
installed, check the name."} else
{$SrvName + " is installed." $SrvName + "'s status is: " + $service.Status
}
Note 1: While this example shows -ErrorAction, you must decide if it's better than
the built-in message ObjectNotFound. Action Point remove -ErrorAction
SilentlyContinue from the above script.
Note 2: The actual name of this service is Print Spooler
(not Printer). I made this deliberate mistake so
as to create the error message.
Take the scenario where you create a PowerShell script which is designed
to kill several
processes. The problem arises when the first process does not
exist, consequently the script comes to a halt prematurely.
"Cannot find a process with the process identifier 51322"
Zapping processes is a classic job for SilentlyContinue ... provided you know what you're
doing! If you would like to try this for real, then launch Task
Manager and note the PID (process ID) of one real and two fictitious
processes. Then substitute your PIDs for 5132, 5075, 5072 in my script below.
# PowerShell SilentlyContinue Clear-Host Stop-Process 5132,
5075, 5072 -ErrorAction SilentlyContinue
Note 3: Please don't use Stop-Process unless you
understand what you are doing, for instance, you make a 'walk-though' of
stopping the process with task
manager.
One common problem when enumerating hives in the registry is that the permissions
on the security hive cause an error in the PowerShell script.
# PowerShell Registry Listing Clear-Host Set-Location HKLM:\ Get-Childitem
-ErrorAction SilentlyContinue
Note 4: -ErrorAction SilentlyContinue suppresses the error message PermissionDenied
to the SECURITY hive.
Note 5: In the output 'SKC' means SubKey count and
'VC' means Value
count.
Calculating IP Address
ranges is a black art, which many network managers solve by creating custom
Excel spreadsheets. IPAT cracks this problem of allocating IP addresses
in networks in two ways:
For Mr Organized there is a nifty subnet
calculator, you enter the network address and the subnet mask, then IPAT
works out the usable addresses and their ranges.
For Mr Lazy IPAT
discovers and then displays the IP addresses of existing computers.
Download the Free IP Address Tracker
Problem: finding files in the System32 folder using a 'where .extension' clause. Specifically, I
got this error: Access to the path 'C:\Windows\System32\LogFiles\WMI\RtBackup' is
denied.
Solution: add -ErrorAction SilentlyContinue after -recurse.
# PowerShell example: Find executables under the System32
folder Clear-Host $Path = "C:\Windows\System32"
Get-ChildItem $Path -recurse -ErrorAction SilentlyContinue `
| where {$_.extension -match "exe"}
Note 6: My friend 'Mad' Mick says you can cure the problem
by simply saying: Get-ChildItem C:\Windows\System32\*.exe -recurse
Guy responds: It's true that Mick's method is superior,
but I wanted a simple problem that -ErrorAction could cure.
# Research PowerShell SilentlyContinue Clear-Host Get-Help
about_commonParameters
Note 7: Incidentally, Help about_common* works just
as well.
Note 8: Other scripts may benefit from substituting
Stop or Inquire for the action to SilentlyContinue.
Instead of ErrorAction SilentlyContinue you can try : -EA 0
# PowerShell Registry Listing Clear-Host Set-Location HKLM:\ Get-Childitem
-EA 0
Researching the about_commonParameters file help file will explain why
these also work: -EA 1 Continue -EA 2 Inquire -EA 3 Confirm
-EA 4 Stop
Guy Recommends: Tools4ever's UMRA
Tired of writing scripts? The User Management Resource Administrator solution
by Tools4ever offers an alternative to time-consuming manual processes.
It
features 100% auto provisioning, Helpdesk Delegation, Connectors to more than
130 systems/applications, Workflow Management, Self Service and many other
benefits. Click on the link for more information on
UMRA.
Summary of PowerShell -ErrorAction
If a script pauses to produce an error message there maybe times when
you want to suppress such system messages. Alternatively, you
may want -ErrorAction to stop the script.
If you like this page then please share it with your friends
See more PowerShell examples
• PowerShell Home •
Foreach loops •
PowerShell Foreach •
Foreach-Object cmdlet
•
Syntax •
Variables •
-whatIf •
-ErrorAction •
Windows
PowerShell •
PowerShell 2.0
• PowerShell Functions •
[System.Math] •
Get-Credential •
Windows 7 PowerShell 2.0
Please email me if you have a better example script. Also please report any factual mistakes, grammatical errors or broken links, I will be happy to correct the fault.
Download my ebook: Getting Started with PowerShell - only $9.25
You get 36 topics organized into these 3 sections: 1) Getting Started 2) Real-life tasks 3) Examples of Syntax.
In addition to the ebook, you get a PDF version of this Introduction to PowerShell ebook It runs to 120
pages of A4.
|