Windows XPのLinuxコマンド「hostname --fqdn」と同等ですか?


33

Windows XPボックスの完全修飾ドメイン名を見つける方法はありますか?

Windowsに慣れていないのでhostname --fqdn、Linuxで使用できるコマンドに相当するものとして、探しているものを説明します。

回答:


18

システムプロパティ([コンピューター名]タブ)で確認できます。

コマンドラインを使用するIPCONFIG /ALLと、「ホスト名」フィールドと「プライマリDNSサフィックス」フィールドを実行して確認できます。


2つの異なる方法は、異なる結果をもたらします。ipconfigは私が期待していたものを提供しますが、「コンピューター名」タブではドメインが異なります。ドメインサフィックスではなく、ワークグループ名のように見えます。これは何らかの形で同等であるWindows固有のものですか?
グランドルフレック

[コンピューター名]タブで、[フルコンピューター名]の値を確認する必要があります。「ドメイン」値は、コンピューターがメンバーとなっているWindowsドメイン(またはワークグループ)です。
マッシモ

そうだね。ホスト名のみを表示しているため(最後にドットが付いているため)、このマシンでのインストールには何か問題があるはずです。おそらく、期待どおりに表示されていたのかどうかを質問する必要はなかっただろう:-D。+1
Grundlefleck

「変更」をクリックしてから「詳細」をクリックしてみましたか?
マッシモ

1
一部のシステムはローカライズされているので、nrで適切な行を検索する方が適切な場合があることを覚えておいてください(5行目)。
RnR

28

hostnameWindows のコマンドには、このようなオプションはありません。ただし、これでうまくいくはずです。

echo %COMPUTERNAME%.%USERDNSDOMAIN%

またはfind /I "string"、ホストsetまたはドメインのgrep(Windowsの場合:)から、systeminfoまたはipconfig -all名前を付けて、他の場所に貼り付けることができます。

編集:Typoを修正しました。ありがとう、ブノワ

更新: この変数%USERDNSDOMAIN%は、ドメインにログオンしている場合にのみ使用できます... DHCPサーバーから取得したDNSサフィックスは、環境変数に入れられません(私が知る限り)。


1
2番目の変数は「%USERDNSDOMAIN%」です。
ブノワ

%USERDNSDOMAIN%は、このシステムの変数ではないようです。何か間違ったことをしていない限り:H:\> echo%COMPUTERNAME%。%USERDNSDOMAIN%[correctname]。%USERDNSDOMAIN%
Grundlefleck

ああ、コメントで恐ろしい貼り付けを忘れてしまった。
グランドルフレック

2
あなたは使用することができWMICをドメイン名を取得するために:wmic computersystem get domain
ノーム・マノス


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バッチファイル:

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

1

コマンドプロンプトからこれを試してください。

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

バッチファイルでこれを使用%する%i場合は、必ずdouble を使用してください。例えば%%i

このようにしたい理由は、ユーザーとコンピューターが異なるドメインに%USERDNSDOMAIN%属している場合、コンピューターに適用したときに正しくないことです。ドメインが1つだけで子ドメインがない場合は、必要に応じて上記の他のソリューションを使用できます。


1

これも機能し、systeminfoの遅延はありません。

/ f "tokens = 2 delims =:"%i in( 'ipconfig / all ^ | findstr Search')do domain =%i&SET newdomain =%domain:=%&echo%COMPUTERNAME%。%newdomain%


1
先頭の4つのスペースを使用して、回答を「コード」としてフォーマットします。ユビキタスな「ヘルプ」リンクは実際に役立ちます。
-Xalorous

0

UnixシェルスクリプトをWindowsに移植する必要がある場合、またはCLIで作業したい場合は、GNUwin32をご覧ください。Windows用のcut、grepなどの一般的なツールを提供します。


0

これはCMDスクリプトです:

@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

別のバージョン:

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%
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.