Jak uzyskać nazwę hosta lokalnego w programie PowerShell?

181

Jak uzyskać nazwę hosta lokalnego (maszyny) w programie PowerShell? Używam programu PowerShell 1.0.

George2
źródło

Odpowiedzi:

260

Możesz po prostu użyć metody .NET Framework:

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

również

$env:COMPUTERNAME

Strelok
źródło
5
Uwaga: jeśli nazwa DNS ma więcej niż 15 znaków, [System.Net.Dns]::GetHostName()(nie obcina się) jest lepsza niż $env:COMPUTERNAME(obcina)
sonjz
W systemie Windows 10 Enterprise env: COMPUTERNAME spowodował następujący błąd: env: COMPUTERNAME: Termin „env: COMPUTERNAME” nie jest rozpoznawany jako nazwa polecenia cmdlet, funkcji, pliku skryptu lub programu operacyjnego. Sprawdź pisownię nazwy lub, jeśli ścieżka została dołączona, sprawdź, czy jest ona poprawna i spróbuj ponownie. W linii: 1 char: 1 + env: COMPUTERNAME + ~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (env: COMPUTERNAME: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException
mathisfun
2
@mathisfun $env:COMPUTERNAMEdziała dobrze na Windows 10 (proszę zwrócić uwagę na znak dolara na początku)
Oleksa
$env:COMPUTERNAMEnie będzie działać w systemie Linux i macOS. Jednak [Environment]::MachineNametak.
felixfbecker
62

Nie zapominaj, że wszystkie stare narzędzia konsoli działają dobrze w PowerShell:

PS> hostname
KEITH1
jpaugh
źródło
Jest to jednak dobra odpowiedź, jeśli chcesz zapisać wartość w zmiennej, użyj zaakceptowanej odpowiedzi.
Yawar Murtaza
37

Długa forma:

get-content env:computername

Skrócona forma:

gc env:computername
RaYell
źródło
17
supershort: $ env: COMPUTERNAME
Ross Presser
Będzie to działać dobrze, dopóki nie będziesz mieć serwera o nazwie dłuższej niż 15 znaków.
Gary Pendlebury,
@GaryPendlebury co się wtedy stanie?
Sajuuk
@Sajuuk computernameto nazwa NetBIOS, która jest ograniczona do 15 znaków.
Gary Pendlebury
14

Wszystkie powyższe pytania są poprawne, ale jeśli chcesz nazwę hosta i nazwę domeny, spróbuj tego:

 [System.Net.DNS]::GetHostByName('').HostName
grepit
źródło
4

Drobne poprawki w odpowiedzi @ CPU-100 dla lokalnej nazwy FQDN:

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

Gary Pendlebury
źródło
4

W PowerShell Core v6 (działa na macOS, Linux i Windows):

[Environment]::MachineName
felixfbecker
źródło
0

Odpowiednik kodu pliku bat w programie PowerShell

Cmd

wmic path Win32_ComputerSystem get Name

Powershell

Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name

i ...

hostname.exe
Gosha
źródło