16

Мне нужна команда, аналогичная доменному имени Linux в Windows, без использования сторонних приложений.

Есть ли такая команда?

6 ответов6

24

Пытаться:

echo %USERDOMAIN%

или же

echo %USERDNSDOMAIN%

Если это все еще не работает, вы можете попробовать использовать systeminfo:

systeminfo | findstr /B /C:”Domain”
3

Вот хитрый способ сделать это, используя команду net и команду find в командном файле:

set command=net user "%USERNAME%" /domain | FIND /I "Full Name"

FOR /F "tokens=1 delims=" %%A in ('%command%') do SET fullNameText=%%A
set fullName=%fullNameText:Full Name=%
for /f "tokens=* delims= " %%a in ("%fullName%") do set fullName=%%a

Первая строка хранит команду, которую мы хотим выполнить в переменной. Он извлекает имя пользователя из переменных среды и передает его в команду net user а также в параметр /domain чтобы указать, что нужно извлечь из текущего домена. Затем он передает результат из этого, который представляет собой набор данных о текущем пользователе, в метод find, который извлекает только то свойство, которое нам нужно. Результат поиска находится в формате "Полное имя Джон Доу". Вторая строка выполнит команду и поместит результат в переменную fullNameText . Третья строка удалит часть "Полное имя" результата и в итоге получит "Джон Доу". Четвертая строка с циклом for удалит все первые пробелы из результата, и вы получите "John Doe" в переменной fullName .

1

@Mike: отличное решение - но у меня были некоторые проблемы с ним в многоязычной среде. У меня есть немецкий и английский серверы.

Я изменил ваш скрипт для использования wmic.exe:

@REM + Find the computer domain name
@echo off
FOR /F "usebackq tokens=*" %%a IN (`wmic.exe COMPUTERSYSTEM GET DOMAIN /Value`) DO (
      @((ECHO %%a | findstr /i /c:"Domain=") && SET _str=%%a) > NUL 2>&1
)
FOR /F "tokens=2 delims=^=" %%a IN ("%_str%") do SET _computerDomain=%%a
SET _computerDomain=%_computerDomain: =%
SET _fqdn=%COMPUTERNAME%.%_computerDomain%
echo %_fqdn%

Спасибо за вашу идею

1

% USERDOMAIN% и домен сетевого компьютера могут отличаться. Команда systeminfo получит правильный ответ, но он МЕДЛЕННЫЙ! Вот решение, которое я использовал:

@REM + find the computer domain name
 FOR /F "usebackq tokens=*" %%a IN (`ipconfig /all`) DO (
     @((ECHO %%a | findstr /i /c:"Primary Dns Suffix") && SET _str=%%a) > NUL 2>&1
 )
 FOR /F "tokens=2 delims=:" %%a IN ("%_str%") do SET _computerDomain=%%a
 SET _computerDomain=%_computerDomain: =%

 SET _fqdn=%COMPUTERNAME%.%_computerDomain%
0

Достаточно одной строки, чтобы получить домен с помощью локального пользователя:

FOR /F "usebackq tokens = 2 delims ==" %% a IN (wmic.exe COMPUTERSYSTEM GET DOMAIN /Value ^|find /i "domain") DO set _computerDom = %% a

0

Вы можете запустить следующую команду в командной строке:

set user

Он дает вам гораздо больше информации, связанной с доменом, в дополнение к имени домена, как показано на снимке ниже:

  1. Пользовательский DNS-домен
  2. Домен пользователя
  3. Профиль домена в роуминге пользователя
  4. Имя пользователя
  5. Профиль пользователя

Важное примечание: домен, в котором зарегистрирован ваш компьютер, может отличаться от домена, в котором зарегистрирован вошедший в систему пользователь. Ознакомьтесь с информацией о транзитивности и направлении доверия домену, чтобы узнать, как пользователь, зарегистрированный в одном домене, может войти в систему компьютера в другом домене.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .