Получить вывод команды 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%