Overview

IPv6 isn't new.  Unfortunately, in 2014, you will still find misinformation or ignorance of the topic (myself included!).  One particularly common issue is administrators who see IPv6 bound to a network adapter and figure they can disable IPv6 by unchecking the box:

This might look promising, but you run into two issues:

The supported way to disable IPv6 is to use the DisabledComponents registry value.

This function will check the DisabledComponents registry value and whether IPv6 is bound to IPEnabled network adapters.

In the following example, I pull up basic details for 5 systems, with a variety of configurations:

We see two computers with IPv6 bound and no DisabledComponents setting.  Two computers have IPv6 unbound despite IPv6 not being disabled via DisabledComponents.  Finally, one system has DisabledComponents set and IPv6 unbound from the adapter.

We can filter the results to pull up systems that are likely misconfigured:

There are a variety of further resources on IPv6.  Two that might be helpful:

Dependencies

This function is written and tested against Windows 6.0 systems and later.

Instructions

 

PowerShell
Edit|Remove
#Add Get-IPv6DisabledStatus to your session:  
    . "\\Path\To\Get-IPv6DisabledStatus.ps1"  
  
#Get help for Get-IPv6DisabledStatus  
    Get-Help Get-IPv6DisabledStatus -Full  
  
#Get IPv6 details on Server14  
    Get-IPv6DisabledStatus -ComputerName Server14  
  
#Find servers that have adapters with IPv6 disabled but nothing set in DisabledComponents 
    $Servers | 
        Get-IPv6DisabledStatus | 
        Where-Object{$_.IPv6Bound -eq $false -and $_.DisabledComponents -like "NA"}
Notes

Pieced together this function when I was first learning PowerShell.  The logic and functionality are sound, but there might be some lazy or poor coding practices : )
Changes: