Thor Logo dbatools

Get-DbaInstanceProtocol

View Source
Klaas Vandenberghe (@PowerDbaKlaas)
Windows, Linux, macOS

Synopsis

Retrieves SQL Server network protocol configuration and status from target computers.

Description

Retrieves the configuration and status of SQL Server network protocols (TCP/IP, Named Pipes, Shared Memory, VIA) by querying the WMI ComputerManagement namespace. This is essential for troubleshooting connectivity issues, auditing network configurations for security compliance, and managing protocol settings across multiple SQL Server instances.

The returned protocol objects include Enable() and Disable() methods, allowing you to manage protocol states directly without opening SQL Server Configuration Manager. This is particularly useful for automating security hardening by disabling unnecessary protocols or standardizing configurations across your environment.

Requires Local Admin rights on destination computer(s).

Syntax

Get-DbaInstanceProtocol
    [[-ComputerName] <DbaInstanceParameter[]>]
    [[-Credential] <PSCredential>]
    [-EnableException]
    [<CommonParameters>]

 

Examples

 

Example: 1
PS C:\> Get-DbaInstanceProtocol -ComputerName sqlserver2014a

Gets the SQL Server related server protocols on computer sqlserver2014a.

Example: 2
PS C:\> 'sql1','sql2','sql3' | Get-DbaInstanceProtocol

Gets the SQL Server related server protocols on computers sql1, sql2 and sql3.

Example: 3
PS C:\> Get-DbaInstanceProtocol -ComputerName sql1,sql2

Gets the SQL Server related server protocols on computers sql1 and sql2.

Example: 4
PS C:\> (Get-DbaInstanceProtocol -ComputerName sql1 | Where-Object { $_.DisplayName -eq 'Named Pipes' }).Disable()

Disables the VIA ServerNetworkProtocol on computer sql1.
If successful, return code 0 is shown.

Optional Parameters

-ComputerName

Specifies the target computer(s) where SQL Server instances are running. Accepts computer names, fully qualified domain names, or IP addresses.
Use this when you need to check network protocol configurations on remote SQL Server machines for connectivity troubleshooting or security audits.

PropertyValue
Aliascn,host,Server
RequiredFalse
Pipelinetrue (ByValue)
Default Value$env:COMPUTERNAME
-Credential

Credential object used to connect to the computer as a different user.

PropertyValue
Alias
RequiredFalse
Pipelinefalse
Default Value
-EnableException

By default, when something goes wrong we try to catch it, interpret it and give you a friendly warning message.
This avoids overwhelming you with “sea of red” exceptions, but is inconvenient because it basically disables advanced scripting.
Using this switch turns this “nice by default” feature off and enables you to catch exceptions with your own try/catch.

PropertyValue
Alias
RequiredFalse
Pipelinefalse
Default ValueFalse

Outputs

WMI ServerNetworkProtocol object

Returns one WMI ServerNetworkProtocol object per network protocol found on the target computer(s). The returned objects include Enable() and Disable() script methods for managing protocol states programmatically.

Default display properties (via Select-DefaultView):

  • ComputerName: The name of the computer running SQL Server
  • InstanceName: The SQL Server instance name
  • DisplayName: The user-friendly name of the protocol (TCP/IP, Named Pipes, Shared Memory, VIA)
  • Name: The technical protocol name as recognized by SQL Server WMI
  • MultiIP: Boolean indicating if the protocol supports multiple IP configurations
  • IsEnabled: Boolean indicating whether the protocol is currently enabled or disabled

Methods available on returned objects:

  • Enable(): Enables the network protocol; returns 0 on success
  • Disable(): Disables the network protocol; returns 0 on success These methods can be called directly on the returned objects to manage protocol states without using SQL Server Configuration Manager.