NET.EXE команда /ADD не поддерживает имена длиной более 20 символов.

В этой статье описывается решение ошибки, которая возникает при использовании NET.EXE /ADD команды с именами пользователей или групп длиной более 20 символов.

Применимо к: Windows 10 – все выпуски, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2
Исходный номер базы знаний: 324639

Симптомы

Если вы используете NET.EXE команду вместе с параметром /ADD и длинными именами пользователей или групп, это только переименовывает синтаксис NET. Сообщение об ошибке не отображается.

Пример:

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]

Это же действие работает с консолью управления компьютерами (MMC) с графическим интерфейсом пользователя, локальными пользователями и группами.

Причина

Команда NET.EXE не поддерживает имена длиной более 20 символов из-за обратной совместимости с LAN Manager 2.0.

Разрешение

Если не удается использовать метод графического пользовательского интерфейса (GUI) и требуется метод скрипта, используйте служебную программу Windows 2000 Resource Kit Cusrmgr.exe. Или используйте VBScript, используя интерфейс прикладного программирования (API), поддерживающий имена длиной более 20 символов.

Состояние

Данное поведение является подтвержденной ошибкой продуктов Майкрософт, перечисленных в разделе «Применимо к».

Дополнительная информация

В примере в разделе "Симптомы" этой статьи используйте следующий синтаксис Cusrmgr.exe:

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

Эта проблема также может возникать в локализованных версиях, в которых встроенные группы превышают ограничение в 20 символов. Например, с немецким именем "Аутентифицированные пользователи" (19 символов): "Authentifizierte Benutzer" (25 символов).

Следующий пример VBScript можно адаптировать и использовать в качестве дополнительного обходного решения. Он добавляет "Аутентифицированные пользователи" в "Опытные пользователи" для версии на английском и немецком языках:

##### 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 #####

Обходной путь

Чтобы обойти эту проблему в Windows Server 2008 и более поздних версиях, используйте команду PowerShell Add-ADGroupMember , как описано в следующей статье TechNet:
Add-ADGroupMember

Если вы используете PowerShell 5.1, используйте команду PowerShell Add-LocalGroupMember -Group , как описано в следующей статье:
Add-LocalGroupMember