Я пытаюсь получить полное доменное имя хоста в каком-то файле .cmd. Мы разделили домен AD, поэтому "@echo %COMPUTERNAME%.%USERDNSDOMAIN%"
не работает. Я имею в виду, что он работает, но возвращает неверное значение.
Решение, к которому я пришел, это powershell.exe -noninteractive -command[System.Net.Dns]::GetHostByName(($env:computerName)).HostName
Он отлично работает в командной строке. Я пытаюсь получить его в переменной в моем cmd-файле:
FOR /F "tokens=* USEBACKQ" %%F IN (\`powershell.exe -noninteractive -command
[System.Net.Dns]::GetHostByName(($env:computerName)).HostName\`) DO (
SET var=%%F
)
ECHO %var%
Но получение следующей ошибки :) .HostName`) было неожиданным в это время.
Я понимаю, что что-то нужно проверять, поскольку и cmd, и powershell разбирают эту строку, но не знают, что и как проверять. Как заставить это работать?
Вам нужно избежать скобок внутри предмет когда используешь FOR \F
FOR /F "tokens=* USEBACKQ" %%F IN (`powershell.exe -noninteractive -command [System.Net.Dns]::GetHostByName^(^($env:computerName^)^).HostName`) DO (
SET var=%%F
)
ECHO %var%