Entspricht dem Linux-Befehl "hostname --fqdn" in Windows XP?

33

Gibt es eine Möglichkeit, den vollqualifizierten Domänennamen einer Windows XP-Box zu ermitteln?

Da ich nicht mit Windows vertraut bin, würde ich beschreiben, wonach ich suche, als Entsprechung des unter hostname --fqdnLinux verfügbaren Befehls .

Grundlefleck
quelle

Antworten:

18

Sie finden es in den Systemeigenschaften (Register "Rechnername").

Über die Befehlszeile können Sie die IPCONFIG /ALLFelder "Hostname" und "Primäres DNS-Suffix" ausführen und überprüfen.

Massimo
quelle
Die beiden verschiedenen Methoden führen zu unterschiedlichen Ergebnissen. ipconfig gibt an, was ich erwartet hatte, aber auf der Registerkarte "Computername" unterscheidet sich die Domäne. Es sieht eher nach einem Arbeitsgruppennamen als nach einem Domänensuffix aus. Ist dies eine Windows-spezifische Sache, wo sie irgendwie gleichwertig sind?
Grundlefleck
Auf der Registerkarte "Computername" sollte der Wert "Vollständiger Computername" angezeigt werden. Der Wert "domain" ist die Windows-Domäne (oder -Arbeitsgruppe), zu der der Computer gehört.
Massimo
Ah richtig. Nun, bei der Installation auf diesem Computer muss etwas nicht stimmen, da nur der Hostname angezeigt wird (mit einem Punkt am Ende). Wahrscheinlich hätte ich die Frage nicht stellen müssen, wenn sie wie erwartet angezeigt worden wäre :-D. +1
Grundlefleck
Haben Sie versucht, auf "Ändern" und dann auf "Mehr" zu klicken?
Massimo
1
Denken Sie daran, dass einige Systeme lokalisiert sind. In einigen Fällen ist es besser, nach der richtigen Zeile zu suchen (Zeile 5 afaik).
RnR
28

Es gibt keine solche Option für den hostnameBefehl in Windows. Dies sollte jedoch den Trick machen:

echo %COMPUTERNAME%.%USERDNSDOMAIN%

Oder Sie können (unter Windows: grep find /I "string") für Host- und Domain aus setoder systeminfooder ipconfig -allNamen und kleben sie zusammen an anderer Stelle.

Edit: Tippfehler behoben. Danke Benoit

Update: Die Variable %USERDNSDOMAIN%ist nur verfügbar, wenn Sie an einer Domain angemeldet sind ... Das DNS-Suffix, das Sie von einem DHCP-Server erhalten, wird nicht in eine Umgebungsvariable übernommen (soweit ich das beurteilen konnte).

PEra
quelle
1
Die zweite Variable ist "% USERDNSDOMAIN%".
Benoit,
% USERDNSDOMAIN% scheint auf diesem System keine Variable zu sein. Es sei denn, ich mache etwas falsch: H: \> echo% COMPUTERNAME%.% USERDNSDOMAIN% [korrekter Name].% USERDNSDOMAIN%
Grundlefleck
Ach, vergaß das Einfügen, das in den Kommentaren schrecklich wäre.
Grundlefleck
2
Sie können WMIC verwenden , um den Domainnamen abzurufen:wmic computersystem get domain
Noam Manos
7

Der Befehl lautet:

ping -a localhost
Bozojoe
quelle
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

DOS-BATCH-DATEI, UM ÜBER SCRIPT AUFRUFEN ZU KÖNNEN:

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

Versuchen Sie dies an der Eingabeaufforderung:

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

Denken Sie daran, double %zu verwenden, %iwenn Sie dies in einer Batchdatei verwenden. z.B%%i

Möglicherweise möchten Sie dies auf folgende Weise tun: Wenn sich Ihre Benutzer und Computer in verschiedenen Domänen befinden, %USERDNSDOMAIN%ist dies bei der Anwendung auf Ihren Computer nicht korrekt. Wenn Sie nur eine Domain und keine untergeordneten Domains haben, können Sie bei Bedarf die anderen oben genannten Lösungen verwenden.

user295947
quelle
1

Dies wird auch funktionieren und hat nicht die Verzögerung von Systeminfo:

für / f "tokens = 2 delims =:"% i in ('ipconfig / all ^ | findstr Search') setze domain =% i und setze newdomain =% domain: =% & echo% COMPUTERNAME%.% newdomain%

Tony
quelle
1
Verwenden Sie vier führende Leerzeichen, um Ihre Antwort als "Code" zu formatieren. Der allgegenwärtige "Hilfe" -Link ist tatsächlich hilfreich.
Xalorous
0

Wenn Sie Unix-Shell-Skripte auf Windows portieren müssen oder einfach nur auf der CLI arbeiten möchten, schauen Sie sich GNUwin32 an . Es bietet die gängigen Tools wie cut, grep usw. für Windows.

PEra
quelle
0

Hier ist ein CMD-Skript dafür:

@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%
Dmitry
quelle
0

Andere Version:

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%
syntax53
quelle