How can I supress the detailed information from Test-NetConnection -ComputerName localhost
for a PowerShell session?
Test-NetConnection
writes quite a bit of information to the console which is displayed in the top of the console, overwriting the progress bar.
The output can be suppressed by setting the
It looked like the output could be supressed like with the -InformationLevel
to Quiet
like so-InformationLevel
parameter, however it turns out that even with -InformationLevel
to Quiet
the information in the top of the console is shown.
Test-NetConnection -ComputerName localhost -InformationLevel Quiet
I would like to set the InformationLevel
just once for the whole script, like you would suppress the progress bar when using Invoke-WebRequest
.
$progressPreference = 'silentlyContinue' # Subsequent calls do not display UI.
Invoke-WebRequest ...
$progressPreference = 'Continue' # Subsequent calls do display UI.
To my knowledge there is no similar $InformationLevelPreference
Test-NetConnection will listen to.
An alternative to Ansgar's proposed solution would be to use the $PSDefaultParameterValues
automatic variable:
PS C:\> Test-NetConnection localhost
ComputerName : localhost
RemoteAddress : ::1
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : ::1
PingSucceeded : True
PingReplyDetails (RTT) : 0 ms
PS C:\> $PSDefaultParameterValues['Test-NetConnection:InformationLevel'] = 'Quiet'
PS C:\> Test-NetConnection localhost
True
Entries in $PSDefaultParameterValues
dictionary have keys in the form of CommandName:ParameterName
, and then the value is the parameter argument value you want to supply by default. You can incorporate wildcards as part of the CommandName
part if necessary
The reason that you might have seen the progress bar go away when switching to -InformationLevel:Quiet
is that issuing a single ICMP request to a loopback interface and returning a single boolean value happens so fast that the host application never has a chance to actually pick up the progress stream state change and display the progress overlay before returning to the prompt.
If you want to suppress the progress bar at the top during execution (regardless of how long the command is running), use the $ProgressPreference
variable:
PS C:\> $ProgressPreference = 'SilentlyContinue'
PS C:\> Test-NetConnection localhost
Wrap Test-NetConnection
in a function and use a global variable for your preference.
$NetConnectionVerbosity = 'Quiet'
function Test-CustomNetConnection {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$false)]
[string]$ComputerName = 'localhost',
[Parameter(Mandatory=$false)]
[string]$InformationLevel = $script:NetConnectionVerbosity
)
Test-NetConnection -ComputerName $ComputerName -InformationLevel $InformationLevel
}
Test-CustomNetConnection
You could supersede Test-NetConnection
with a custom function and an alias:
$NetConnectionVerbosity = 'Quiet'
function Test-CustomNetConnection {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$false)]
[string]$ComputerName = 'localhost',
[Parameter(Mandatory=$false)]
[string]$InformationLevel = $script:NetConnectionVerbosity
)
$f = Get-Command -Name 'Test-NetConnection' -CommandType Function
& $f -ComputerName $ComputerName -InformationLevel $InformationLevel
}
New-Alias -Name 'Test-NetConnection' -Value 'Test-CustomNetConnection'
Test-NetConnection
The above defines a custom function that gets and invokes the original Test-NetConnection
function, then defines an alias Test-NetConnection
for the custom function. Since aliases take precedence over functions invocations of Test-NetConnection
calls will now invoke Test-CustomNetConnection
, which in turn invokes the original Test-NetConnection
with the desired parameters.
Creating a proxy function might also be an option.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With