Manage - Network Adapter Protocols
Summary
This task allows you to manage network protocols on Windows machines, including enabling, disabling, and configuring them to use DHCP.
Caution : Use this script with caution. Disabling IPv4 on the machine may result in a network disconnection.
Sample Run
Serach for Manage - Network Adapter Protocols task and click on it

Selec Run Now and click Run Task button

Dependencies
- Dynamic Group - Devices Opted for Network Adapter Solution
- Manage - Network Adapter Solutions Custom Field
- Solution - Manage Network Adapter Solution
Task Creation
Step 1
Navigate to Automation ➞ Tasks

Step 2
Create a new Script Editor style task by choosing the Script Editor option from the Add dropdown menu
The New Script page will appear on clicking the Script Editor button:

Step 3
Fill in the following details in the Description section:
- Name:
Manage - Network Adapter Protocols - Description: It allows you to manage network protocols on Windows machines, including enabling, disabling, and configuring them to use DHCP.
Caution : Use this script with caution. Disabling IPv4 on the machine may result in a network disconnection. - Category:
Custom

Script Editor
Click the Add Row button in the Script Editor section to start creating the script
A blank function will appear:
Row 1 Function: Set Pre-defined Variable
- Select
Set Pre-Defined VariableFunction
- Select
Custom Field - Input
IsClientEnabledas Variable name - Select
Enable Network Adapter Solutioncustom field from the dropdown - Click
Save

Row 2 Function: Set Pre-defined Variable
- Select
Set Pre-Defined VariableFunction
- Select
Custom Field - Input
ClientActionas Variable name - Select
Action(ENUM - CLIENT)custom field from the dropdown for Client - Click
Save

Row 3 Function: Set Pre-defined Variable
- Select
Set Pre-Defined VariableFunction
- Select
Custom Field - Input
SiteActionas Variable name - Select
Action(ENUM - SITE)custom field from the dropdown for Site - Click
Save
Row 4 Function: Set Pre-defined Variable
- Select
Set Pre-Defined VariableFunction
- Select
Custom Field - Input
EndpointActionas Variable name - Select
Action(ENUM - ENDPOINT)custom field from the dropdown for Endpoint - Click
Save
Row 5 Function: Set Pre-defined Variable
- Select
Set Pre-Defined VariableFunction
- Select
Custom Field - Input
ClientProtocolas Variable name - Select
Protocol(ENUM - CLIENT)custom field from the dropdown for Client - Click
Save
Row 6 Function: Set Pre-defined Variable
- Select
Set Pre-Defined VariableFunction
- Select
Custom Field - Input
SiteProtocolas Variable name - Select
Protocol(ENUM - SITE)custom field from the dropdown for Site - Click
Save

Row 7 Function: Set Pre-defined Variable
- Select
Set Pre-Defined VariableFunction
- Select
Custom Field - Input
EndpointProtocolas Variable name - Select
Protocol(ENUM - ENDPOINT)custom field from the dropdown for Endpoint - Click
Save

Row 8 Function: PowerShell Script
Paste in the following PowerShell script and set the expected script execution time to 900 seconds.
if ('@IsClientEnabled@' -notmatch '1|Yes|True|Y') {
return 'Client is not opted for Network Adapter Solution'
}
# Resolve action
$ResolvedAction = 'Not Set'
if ('@EndpointAction@' -match 'ENABLE|DISABLE|Enable DHCP|Exclude from Solution') {
$ResolvedAction = '@EndpointAction@'
}
elseif ('@SiteAction@' -match 'ENABLE|DISABLE|Enable DHCP|Exclude from Solution') {
$ResolvedAction = '@SiteAction@'
}
elseif ('@ClientAction@' -match 'ENABLE|DISABLE|Enable DHCP') {
$ResolvedAction = '@ClientAction@'
}
if ($ResolvedAction -match 'Not Set|Exclude from Solution') {
return 'Please verify that the Action is defined properly or solution is enabled for the machine, then reattempt executing the Task'
}
# Resolve protocol
$ResolvedProtocol = 'Not Set'
if ('@EndpointProtocol@' -match 'IPv4|IPv6|Both') {
$ResolvedProtocol = '@EndpointProtocol@'
}
elseif ('@SiteProtocol@' -match 'IPv4|IPv6|Both') {
$ResolvedProtocol = '@SiteProtocol@'
}
elseif ('@ClientProtocol@' -match 'IPv4|IPv6|Both') {
$ResolvedProtocol = '@ClientProtocol@'
}
if ($ResolvedProtocol -match 'Not Set') {
return 'Please verify that the Protocol is properly defined for the machine, then reattempt executing the Task'
}
$Action = $ResolvedAction
$Protocol = $ResolvedProtocol
function Set-NetworkAdapterIP {
param (
[string]$InterfaceAlias,
[string]$Protocol,
[string]$Action
)
$ComponentID = if ($Protocol -eq "IPv6") { "ms_tcpip6" } else { "ms_tcpip" }
if ($Action -eq "DISABLE") {
Disable-NetAdapterBinding -Name $InterfaceAlias -ComponentID $ComponentID
$binding = Get-NetAdapterBinding -Name $InterfaceAlias | Where-Object { $_.ComponentID -eq $ComponentID }
if ($binding.Enabled -eq $false) {
Write-Output "$Protocol successfully disabled on $InterfaceAlias."
} else {
Write-Error "Failed to disable $Protocol on $InterfaceAlias."
}
}
elseif ($Action -eq "ENABLE") {
Enable-NetAdapterBinding -Name $InterfaceAlias -ComponentID $ComponentID
$binding = Get-NetAdapterBinding -Name $InterfaceAlias | Where-Object { $_.ComponentID -eq $ComponentID }
if ($binding.Enabled -eq $true) {
Write-Output "$Protocol successfully enabled on $InterfaceAlias."
} else {
Write-Error "Failed to enable $Protocol on $InterfaceAlias."
}
}
elseif ($Action -eq "Enable DHCP") {
Enable-NetAdapterBinding -Name $InterfaceAlias -ComponentID $ComponentID
if ($Protocol -eq "IPv4") {
Set-NetIPInterface -InterfaceAlias $InterfaceAlias -Dhcp Enabled
Remove-NetIPAddress -InterfaceAlias $InterfaceAlias -AddressFamily IPv4 -Confirm:$false -ErrorAction SilentlyContinue
}
elseif ($Protocol -eq "IPv6") {
Set-NetIPInterface -InterfaceAlias $InterfaceAlias -AddressFamily IPv6 -Dhcp Enabled
Remove-NetIPAddress -InterfaceAlias $InterfaceAlias -AddressFamily IPv6 -Confirm:$false -ErrorAction SilentlyContinue
}
$dhcpStatus = Get-NetIPInterface -InterfaceAlias $InterfaceAlias -AddressFamily $Protocol
if ($dhcpStatus.Dhcp -eq "Enabled") {
Write-Output "$Protocol DHCP successfully enabled on $InterfaceAlias."
} else {
Write-Error "Failed to enable DHCP for $Protocol on $InterfaceAlias."
}
}
}
$adapters = Get-NetAdapter
foreach ($adapter in $adapters) {
if ($Protocol -eq "Both") {
if ($Action -eq "DISABLE") {
Write-Error "Invalid selection: Cannot disable both IPv4 and IPv6."
exit 1
}
Set-NetworkAdapterIP -InterfaceAlias $adapter.Name -Protocol "IPv4" -Action $Action
Set-NetworkAdapterIP -InterfaceAlias $adapter.Name -Protocol "IPv6" -Action $Action
}
elseif ($Protocol -eq "IPv4") {
Set-NetworkAdapterIP -InterfaceAlias $adapter.Name -Protocol "IPv4" -Action $Action
if ($Action -eq "DISABLE") {
Set-NetworkAdapterIP -InterfaceAlias $adapter.Name -Protocol "IPv6" -Action "ENABLE"
}
}
elseif ($Protocol -eq "IPv6") {
Set-NetworkAdapterIP -InterfaceAlias $adapter.Name -Protocol "IPv6" -Action $Action
if ($Action -eq "DISABLE") {
Set-NetworkAdapterIP -InterfaceAlias $adapter.Name -Protocol "IPv4" -Action "ENABLE"
}
}
}

Row 9 Function: Script Log
Add a new row by clicking the Add Row button.
A blank function will appear.
Search and select the Script Log function.
The following function will pop up on the screen:
In the script log message, simply type %output% and click the Save button.
Click the Save button at the top-right corner of the screen to save the script.
Save Task
Click the Save button at the top-right corner of the screen to save the script.
Completed Task

Deployment
This task has to be scheduled on Devices Opted for Network Adapter Solution group for auto deployment. The script can also be run manually if required.
- Go to
Automations>Tasks. - Search for
Manage - Network Adapter Protocols. - Then click on
Schedulefrom right side and provide the parameters detail as necessary for the script completion. - Select
Targeted Resourcesas device groupDevices Opted for Network Adapter Solution.
Output
- Script Logs