Команда HOSTNAME выводит сетевое имя текущего компьютера — то самое имя, которое видно в сети, в свойствах системы и в оснастке Active Directory. Это простейший способ получить имя машины из командной строки или скрипта, не открывая GUI.
- Синтаксис команды HOSTNAME
- Ключи и параметры
- Примеры использования
- Вывести имя текущего компьютера
- Сохранить имя компьютера в файл
- Использовать имя компьютера в переменной скрипта
- Проверить, запущен ли скрипт на нужной машине
- Добавить имя компьютера в имя архива
- Получить имя удалённого компьютера через NSLOOKUP
- Использование HOSTNAME в PowerShell-скрипте
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- Чем HOSTNAME отличается от переменной %COMPUTERNAME%?
- Как узнать полное доменное имя компьютера (FQDN)?
- Можно ли изменить имя компьютера командой HOSTNAME?
- Как получить имя компьютера удалённой машины?
- Нужны ли права администратора для команды HOSTNAME?
- Как использовать HOSTNAME в скрипте PowerShell?
Синтаксис команды HOSTNAME
HOSTNAME
Команда не имеет ключей и не принимает аргументов. Единственный вывод — имя компьютера, завершённое переводом строки.
Для получения имени удалённого компьютера HOSTNAME не подходит — используйте другие инструменты (см. раздел «Примеры использования»).
Ключи и параметры
У команды HOSTNAME нет ключей. Единственный доступный аргумент:
| Аргумент | Описание | Пример |
|---|---|---|
| (без аргументов) | Вывести имя текущего компьютера | hostname |
/? | Вывести краткую справку | hostname /? |
Хотя у самой команды нет ключей, её вывод можно перенаправлять, фильтровать и сохранять стандартными операторами CMD.
Примеры использования
Вывести имя текущего компьютера
Самый простой случай — нужно быстро узнать имя машины.
hostname
Вывод: одна строка, например DESKTOP-ABC123 или SRV-FILESERVER01. Команда выполняется мгновенно и не требует прав администратора.
Сохранить имя компьютера в файл
Нужно зафиксировать имя машины при инвентаризации или создании отчёта.
hostname > C:\hostname.txt
Файл hostname.txt в корне диска C будет содержать имя компьютера. Для добавления к существующему файлу используйте >>: hostname >> C:\machines.txt.
Использовать имя компьютера в переменной скрипта
В bat-файле нужно использовать имя машины как часть пути или имени файла журнала.
@echo off
for /f %%i in ('hostname') do set PCNAME=%%i
echo Компьютер: %PCNAME%
echo Лог: C:\Logs\%PCNAME%-%DATE:~-10%.log Команда FOR /F захватывает вывод hostname в переменную PCNAME. Теперь имя машины доступно для всего скрипта.
Проверить, запущен ли скрипт на нужной машине
Скрипт должен выполняться только на определённом сервере — на остальных завершаться с предупреждением.
@echo off
for /f %%i in ('hostname') do set PCNAME=%%i
if /i not "%PCNAME%"=="SRV-BACKUP01" (
echo Этот скрипт предназначен только для SRV-BACKUP01.
exit /b 1
)
echo Запуск резервного копирования на %PCNAME%... Скрипт сравнивает текущее имя машины с ожидаемым и прерывает работу, если они не совпадают.
Добавить имя компьютера в имя архива
При автоматическом резервном копировании нужно включать имя машины в имя файла архива.
@echo off
for /f %%i in ('hostname') do set PCNAME=%%i
set BACKUP=C:\Backups\%PCNAME%-backup.zip
echo Создаётся архив: %BACKUP% Каждый компьютер в сети создаёт архив с уникальным именем — удобно при централизованном хранении резервных копий.
Получить имя удалённого компьютера через NSLOOKUP
HOSTNAME показывает только локальное имя. Для удалённой машины по IP используйте nslookup:
nslookup 192.168.1.50
Вывод покажет DNS-имя компьютера с IP-адресом 192.168.1.50. Альтернатива — ping -a 192.168.1.50, который резолвит имя при ответе.
Использование HOSTNAME в PowerShell-скрипте
В PowerShell-скриптах удобнее использовать встроенную переменную:
$pcName = hostname Write-Host "Имя компьютера: $pcName" # Или через встроенное свойство .NET: $pcName = [System.Net.Dns]::GetHostName() Write-Host "Имя компьютера: $pcName"
Оба способа возвращают одинаковый результат.
Частые ошибки и решения
| Ошибка / проблема | Причина | Решение |
|---|---|---|
| Команда выводит имя, но оно не совпадает с отображаемым в сети | Компьютер состоит в домене — hostname выводит только NetBIOS-имя без суффикса домена | Для полного имени (FQDN) используйте: wmic computersystem get DNSHostName или в PowerShell: [System.Net.Dns]::GetHostEntry("").HostName |
В скрипте %COMPUTERNAME% и вывод hostname отличаются | Переменная %COMPUTERNAME% в верхнем регистре, hostname может вернуть смешанный регистр | При сравнении использовать IF /I (игнорировать регистр) или %COMPUTERNAME% для стабильного результата в скриптах |
| Вывод содержит лишний символ или пустую строку при записи в переменную | Некорректный способ присваивания (например через SET /P вместо FOR /F) | Использовать for /f %%i in ('hostname') do set VAR=%%i — этот метод надёжно убирает лишние символы |
Нужно узнать имя удалённого компьютера, но hostname не принимает аргументов | hostname работает только локально | Использовать nslookup IP, ping -a IP или PowerShell: Invoke-Command -ComputerName ИМЯ -ScriptBlock { hostname } |
| Нужно изменить имя компьютера через командную строку | hostname — команда только для чтения | Для смены имени использовать: wmic computersystem where name="%COMPUTERNAME%" call rename name="НОВОЕ_ИМЯ" или PowerShell: Rename-Computer -NewName "НОВОЕ_ИМЯ" |
Когда применять, а когда нет
HOSTNAME — утилита только для чтения имени локального компьютера. Применяйте её в bat-скриптах, когда нужно включить имя машины в путь файла, имя лога или условную проверку. Для получения FQDN (полного доменного имени) команда не подходит — используйте wmic computersystem get DNSHostName. Для получения имени удалённого компьютера используйте nslookup, ping -a или PowerShell-командлет Invoke-Command. В PowerShell вместо вызова hostname предпочтительнее использовать переменную среды $env:COMPUTERNAME или метод [System.Net.Dns]::GetHostName() — они встроены в язык и не требуют запуска внешней команды.
FAQ
Чем HOSTNAME отличается от переменной %COMPUTERNAME%?
Оба возвращают имя компьютера, но %COMPUTERNAME% — переменная среды, доступная напрямую в CMD без запуска команды. Она всегда в верхнем регистре. Вывод hostname сохраняет исходный регистр имени. В скриптах %COMPUTERNAME% удобнее, так как не требует конструкции FOR /F.
Как узнать полное доменное имя компьютера (FQDN)?
Команда hostname возвращает только короткое NetBIOS-имя. Для FQDN используйте: wmic computersystem get DNSHostName или в PowerShell: [System.Net.Dns]::GetHostEntry("").HostName.
Можно ли изменить имя компьютера командой HOSTNAME?
Нет, hostname — только для чтения. Для смены имени используйте PowerShell: Rename-Computer -NewName "НОВОЕ_ИМЯ" -Restart (требует перезагрузки и прав администратора).
Как получить имя компьютера удалённой машины?
Несколько способов: nslookup IP-адрес (DNS-разрешение), ping -a IP-адрес (если DNS настроен), или PowerShell: Invoke-Command -ComputerName ИМЯ_ИЛИ_IP -ScriptBlock { $env:COMPUTERNAME }.
Нужны ли права администратора для команды HOSTNAME?
Нет, hostname не требует прав администратора. Команду может выполнить любой пользователь системы.
Как использовать HOSTNAME в скрипте PowerShell?
В PowerShell доступны три эквивалентных способа: hostname (вызов команды CMD), $env:COMPUTERNAME (переменная среды) и [System.Net.Dns]::GetHostName() (.NET-метод). Для скриптов рекомендуется $env:COMPUTERNAME — быстрее и без создания дочернего процесса.


