Odpowiednik polecenia Linux `hostname --fqdn` w systemie Windows XP?


33

Czy istnieje sposób na znalezienie w pełni kwalifikowanej nazwy domeny dla systemu Windows XP?

Nie znając systemu Windows opisałbym to, czego szukam, jako odpowiednik polecenia hostname --fqdndostępnego w systemie Linux.

Odpowiedzi:


18

Można go znaleźć we właściwościach systemu (karta „Nazwa komputera”).

Za pomocą wiersza polecenia możesz uruchomić IPCONFIG /ALLi rzucić okiem na pola „Nazwa hosta” i „Sufiks podstawowej domeny DNS”.


Dwa różne sposoby dają różne wyniki. ipconfig podaje to, czego się spodziewałem, ale na karcie „Nazwa komputera” domena jest inna. Wygląda bardziej jak nazwa grupy roboczej niż sufiks domeny. Czy jest to coś specyficznego dla systemu Windows, w którym są one w jakiś sposób równoważne?
Grundlefleck,

W zakładce „Nazwa komputera” powinieneś spojrzeć na wartość „Pełna nazwa komputera”; wartość „domena” to domena Windows (lub grupa robocza), do której należy komputer.
Massimo,

Ah, tak. Cóż, musi być coś nie tak z instalacją na tym komputerze, ponieważ pokazuje tylko nazwę hosta (z kropką na końcu). Prawdopodobnie nie musiałby zadawać pytania, gdyby pokazywał je zgodnie z oczekiwaniami :-D. +1
Grundlefleck

Czy próbowałeś kliknąć „Zmień”, a następnie „Więcej”?
Massimo,

1
Pamiętaj tylko, że niektóre systemy są zlokalizowane, więc szukanie odpowiedniej linii przez nr może być lepsze w niektórych przypadkach (jest to linia 5 afaik).
RnR

28

W systemie hostnameWindows nie ma takiej opcji dla polecenia. Jednak powinno to załatwić sprawę:

echo %COMPUTERNAME%.%USERDNSDOMAIN%

Lub możesz grep (pod Windows find /I "string":) dla Hosta i Domeny z setlub systeminfolub ipconfig -allnazwać i skleić go razem w innym miejscu.

Edycja: naprawiono literówkę. Dzięki Benoit

Aktualizacja: Zmienna %USERDNSDOMAIN%jest dostępna tylko po zalogowaniu do domeny ... Sufiks DNS otrzymany z serwera DHCP nie jest umieszczany w zmiennej środowiskowej (o ile mogłem się domyślić).


1
Druga zmienna to „% USERDNSDOMAIN%”.
Benoit,

% USERDNSDOMAIN% nie wydaje się być zmienną w tym systemie. Chyba że zrobię coś źle: H: \> echo% COMPUTERNAME%.% USERDNSDOMAIN% [nazwa poprawna].% USERDNSDOMAIN%
Grundlefleck

Ach, zapomniałem o wklejaniu, które byłoby okropne w komentarzach.
Grundlefleck,

2
Możesz użyć WMIC do odzyskania nazwy domeny:wmic computersystem get domain
Noam Manos


1

vbscript:

' Print FQDN in lower case letters
' Volker Fröhlich (2011)

option explicit
dim Message
dim output
dim WshShell, objEnv
dim mydomain

' Read value from registry
function readFromRegistry (strRegistryKey, strDefault )
    Dim WSHShell, value

    On Error Resume Next
    Set WSHShell = CreateObject("WScript.Shell")
    value = WSHShell.RegRead( strRegistryKey )

    if err.number <> 0 then
        readFromRegistry= strDefault
    else
        readFromRegistry=value
    end if

    set WSHShell = nothing
end function

mydomain = readfromRegistry("HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Domain", "asdf")

' Get the WshShell object
Set WshShell = CreateObject("WScript.Shell")

' Get collection by using the Environment property
Set objEnv = WshShell.Environment("Process")

if (mydomain="") then
Message = LCase(objEnv("COMPUTERNAME"))
else
Message = LCase(objEnv("COMPUTERNAME")) & "." & mydomain
end if

' Write to stdout
set output = wscript.stdout
output.writeline Message

PLIK SERII DOS DO WEZWANIA POWYŻEJ PISEMU:

for /f %%a in ('cscript //nologo yourscriptname.vbs') do set FQDN=%%a
echo %FQDN%
pause

1

Wypróbuj to w wierszu polecenia:

FOR /F "tokens=2" %i in ('systeminfo ^| find /i "Domain"') do echo %computername%.%i

Pamiętaj, aby użyć dwukrotnie %na %irazie za pomocą tego w program wsadowy. na przykład%%i

Powodem, dla którego możesz chcieć to zrobić w ten sposób, jest: jeśli Twoi użytkownicy i komputery znajdują się w różnych domenach, %USERDNSDOMAIN%nie będą poprawne po zastosowaniu na Twoim komputerze. Jeśli masz tylko jedną domenę i nie ma domen podrzędnych, możesz skorzystać z innych powyższych rozwiązań, jeśli chcesz.


1

Działa to również i nie ma opóźnienia systeminfo:

for / f "tokeny = 2 delims =:"% i in ('ipconfig / all ^ | findstr Search') wykonaj SET domain =% i & SET newdomain =% domain: =% i echo% COMPUTERNAME%.% newdomain%


1
Użyj czterech wiodących spacji, aby sformatować swoją odpowiedź jako „kod”. Wszechobecny link „pomoc” jest w rzeczywistości pomocny.
Xalorous,

0

Jeśli potrzebujesz przenieść skrypty powłoki Uniksa do systemu Windows lub po prostu chcesz pracować na CLI, zajrzyj na GNUwin32 . Zapewnia typowe narzędzia, takie jak cut, grep itp. Dla systemu Windows.


0

Oto skrypt CMD do tego:

@ECHO OFF

FOR /f "tokens=2,* delims= " %%a in ('IPCONFIG ^/ALL ^| FINDSTR "Primary Dns"') do set tempsuffix=%%b
FOR /f "tokens=1,2 delims=:" %%a in ('echo %tempsuffix%') do set dnssuffix=%%b
SET FQDN=%COMPUTERNAME%.%DNSSUFFIX:~1%

ECHO Server FQDN: %FQDN%

0

Inna wersja:

echo.
echo Getting FQDN...
FOR /F "tokens=1-2" %%A in ('ping -a localhost -n 1') do (
    echo %%A | find /i "Pinging" >nul
    IF NOT ERRORLEVEL 1 SET "FQDN=%%B"
)
echo %FQDN%
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.