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 --fqdn
Linux verfügbaren Befehls .
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 --fqdn
Linux verfügbaren Befehls .
Antworten:
Sie finden es in den Systemeigenschaften (Register "Rechnername").
Über die Befehlszeile können Sie die IPCONFIG /ALL
Felder "Hostname" und "Primäres DNS-Suffix" ausführen und überprüfen.
Es gibt keine solche Option für den hostname
Befehl 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 set
oder systeminfo
oder ipconfig -all
Namen 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).
wmic computersystem get domain
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
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, %i
wenn 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.
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%
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.
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%