Как получить имя локального хоста в PowerShell?

181

Как получить имя локального хоста (машины) в PowerShell? Я использую PowerShell 1.0.

George2
источник

Ответы:

260

Вы можете просто использовать метод .NET Framework:

[System.Net.Dns]::GetHostName()

также

$env:COMPUTERNAME

Strelok
источник
5
Примечание: если ваше DNS-имя длиннее 15 символов, [System.Net.Dns]::GetHostName()(не $env:COMPUTERNAME
усекает
В Windows 10 Enterprise env: COMPUTERNAME выдало следующую ошибку: env: COMPUTERNAME: термин 'env: COMPUTERNAME' не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку. В строке: 1 символ: 1 + env: COMPUTERNAME + ~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (env: COMPUTERNAME: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException
mathisfun
2
@mathisfun $env:COMPUTERNAMEотлично работает на Windows 10 (обратите внимание на знак доллара в начале)
oleksa
$env:COMPUTERNAMEне будет работать на Linux и MacOS. Тем [Environment]::MachineNameне менее, делает.
felixfbecker
62

Не забывайте, что все ваши старые консольные утилиты прекрасно работают в PowerShell:

PS> hostname
KEITH1
jpaugh
источник
Это хороший ответ, однако, если вы хотите сохранить значение в переменной, используйте принятый ответ.
Явар Муртаза
37

Длинная форма:

get-content env:computername

Короткая форма:

gc env:computername
RaYell
источник
17
суперскорость: $ env: COMPUTERNAME
Росс Прессер
Это будет работать нормально, пока у вас не будет сервера с именем длиннее 15 символов.
Гэри Пендлбери
@GaryPendlebury что будет потом?
Sajuuk
@Sajuuk computername- это имя NetBIOS, которое ограничено 15 символами.
Гэри Пендлбери,
14

Все приведенные выше вопросы верны, но если вы хотите, чтобы имя хоста и имя домена, попробуйте это:

 [System.Net.DNS]::GetHostByName('').HostName
grepit
источник
4

Небольшая настройка ответа @ CPU-100 для локального FQDN:

[System.Net.DNS]::GetHostByName($Null).HostName

Гэри Пендлбери
источник
4

В PowerShell Core v6 (работает на macOS, Linux и Windows):

[Environment]::MachineName
felixfbecker
источник
0

Аналог кода bat-файла в Powershell

Cmd

wmic path Win32_ComputerSystem get Name

Powershell

Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name

и ...

hostname.exe
Гоша
источник