Получить вывод команды PowerShell как переменную в сценарии bat (cmd)

Я пытаюсь получить полное доменное имя хоста в каком-то файле.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 анализируют эту строку, но не знаю, что проверять и как. Как заставить это добраться до работы?

1 ответ

Вы должны избегать скобок внутри темы при использовании 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%
Другие вопросы по тегам