Jak uzyskać nazwę hosta lokalnego w programie PowerShell?


181

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

Odpowiedzi:


260

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

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

również

$env:COMPUTERNAME


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

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

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

4

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

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


4

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

[Environment]::MachineName

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.