NET.EXE comando /ADD no admite nombres de más de 20 caracteres

En este artículo se proporciona una solución a un error que se produce cuando se usa el NET.EXE /ADD comando con nombres de usuario o grupo de más de 20 caracteres.

Se aplica a: Windows 10: todas las ediciones, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2
Número de KB original: 324639

Síntomas

Cuando se usa el NET.EXE comando junto con el /ADD modificador y los nombres de usuario o grupo largos, esto solo vuelve a mostrar la sintaxis de NET. No recibe ningún mensaje de error.

Ejemplo:

C:\>NET.EXE localgroup MyRemoteUsers "REMOTE INTERACTIVE LOGON" /ADD

The syntax of this command is:

NET LOCALGROUP [groupname [/COMMENT:"text"]] [/DOMAIN]
groupname {/ADD [/COMMENT:"text"] | /DELETE} [/DOMAIN]
groupname name [...] {/ADD | /DELETE} [/DOMAIN]

La misma acción funciona con administración de equipos de GUI, usuarios locales y grupos de Microsoft Management Console (MMC).

Causa

El comando NET.EXE no admite nombres de más de 20 caracteres por motivos de compatibilidad con versiones anteriores con LAN Manager 2.0.

Solución

Si no se puede usar el método de interfaz gráfica de usuario (GUI) y se requiere un método de scripting, use la utilidad Kit de recursos de Windows 2000 Cusrmgr.exe. O bien, use VBScript mediante una interfaz de programación de aplicaciones (API) que admita nombres de más de 20 caracteres.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".

Más información

En el ejemplo de la sección "Síntomas" de este artículo, use la siguiente sintaxis de Cusrmgr.exe:

C:\>CUSRMGR.EXE -u "REMOTE INTERACTIVE LOGON" -alg "MyRemoteUsers"

Este problema también puede producirse con versiones localizadas en las que los grupos integrados superan el límite de nombres de 20 caracteres. Por ejemplo, con el nombre en alemán de "Usuarios autenticados" (19 caracteres): "Authentifizierte Benutzer" (25 caracteres).

El siguiente ejemplo de VBScript se puede adaptar y usar como una solución alternativa adicional. Agrega "Usuarios autenticados" a "Usuarios avanzados" para la versión en inglés y alemán:

##### VBScript ADDGRP.VBS #####

On Error Resume Next  

Dim oContainer  
Dim oGroup  
Dim oIADs  

Dim oComputerInformation  
Dim bolGroupSet  
bolGroupSet = False  

Set oComputerInformation = CreateObject("WScript.Network")  

Set oContainer = GetObject("WinNT://" +  
oComputerInformation.ComputerName)'get the IADsContainer object for the local computer  

oContainer.Filter = Array("Group")'We only need to enumerate groups,
therefore the filter  
For Each oIADs In oContainer 'for each IADs object we find there  
If oIADs.Name = "Hauptbenutzer" Or oIADs.Name = "Power Users" Then  
'check if it has the name "Power Users" or "Hauptbenutzer"  

Set oGroup = oIADs 'If so put it into the IADsGroup object  
oGroup.Add ("WinNT://S-1-5-11")'add the group "Authenticated Users"  
oGroup.SetInfo 'and save the info  

If Err <> 0 Then 'if error number is not 0 (Error occurred)  
MsgBox Err.Number, vbCritical, "AddGroup" 'print out the error message  
Else 'if everything seems to be ok  
bolGroupSet = True 'set the boolean value to True so we know the group was added  
End If  

End If  
Next  

If bolGroupSet = True Then 'if bolGroupSet is False there was nothing done  
MsgBox "Group added successfully", vbInformation, "AddGroup"  
Else  
MsgBox "No action has taken place!", vbExclamation, "AddGroup"  
End If  
##### script end #####

Solución alternativa

Para solucionar este problema en Windows Server 2008 y versiones posteriores, use el comando Add-ADGroupMember de PowerShell, tal como se describe en el siguiente artículo de TechNet:
Add-ADGroupMember

Si usa PowerShell 5.1, use el comando Add-LocalGroupMember -Group de PowerShell, como se describe en el artículo siguiente:
Add-LocalGroupMember