Get-DbaInstanceProtocol
View SourceSynopsis
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.
| Property | Value |
|---|---|
| Alias | cn,host,Server |
| Required | False |
| Pipeline | true (ByValue) |
| Default Value | $env:COMPUTERNAME |
-Credential
Credential object used to connect to the computer as a different user.
| Property | Value |
|---|---|
| Alias | |
| Required | False |
| Pipeline | false |
| 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.
| Property | Value |
|---|---|
| Alias | |
| Required | False |
| Pipeline | false |
| Default Value | False |
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.
dbatools