Bagaimana cara mendapatkan nama host lokal di PowerShell?

181

Bagaimana cara saya mendapatkan nama localhost (mesin) di PowerShell? Saya menggunakan PowerShell 1.0.

George2
sumber

Jawaban:

260

Anda bisa menggunakan metode .NET Framework:

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

juga

$env:COMPUTERNAME

Strelok
sumber
5
Catatan: jika nama DNS Anda lebih panjang dari 15 karakter, [System.Net.Dns]::GetHostName()(tidak terpotong) lebih baik dari $env:COMPUTERNAME(terpotong)
sonjz
Pada Windows 10 Enterprise, env: COMPUTERNAME menghasilkan kesalahan berikut: env: COMPUTERNAME: Istilah 'env: COMPUTERNAME' tidak diakui sebagai nama cmdlet, fungsi, file skrip, atau program yang dapat dioperasikan. Periksa ejaan nama, atau jika jalur disertakan, verifikasi jalur itu benar dan coba lagi. Pada baris: 1 karakter: 1 + env: COMPUTERNAME + ~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (env: COMPUTERNAME: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException
mathisfun
2
@mathisfun $env:COMPUTERNAMEberfungsi dengan baik di Windows 10 (harap perhatikan tanda dolar di awal)
oleksa
$env:COMPUTERNAMEtidak akan bekerja di Linux dan macOS. Namun [Environment]::MachineNamedemikian.
felixfbecker
62

Jangan lupa bahwa semua utilitas konsol lama Anda berfungsi dengan baik di PowerShell:

PS> hostname
KEITH1
jpaugh
sumber
Namun, ini adalah jawaban yang baik, jika Anda ingin menyimpan nilai dalam variabel kemudian gunakan jawaban yang diterima.
Yawar Murtaza
37

Bentuk panjang:

get-content env:computername

Bentuk pendek:

gc env:computername
RaYell
sumber
17
supershort: $ env: COMPUTERNAME
Ross Presser
Ini akan berfungsi dengan baik, sampai Anda memiliki server dengan nama lebih dari 15 karakter.
Gary Pendlebury
@GaryPendlebury, apa yang akan terjadi selanjutnya?
Sajuuk
@Sajuuk computernameadalah nama NetBIOS, yang dibatasi hingga 15 karakter.
Gary Pendlebury
14

Semua pertanyaan di atas benar tetapi jika Anda ingin nama host dan nama domain coba ini:

 [System.Net.DNS]::GetHostByName('').HostName
grepit
sumber
4

Tweak sedikit pada jawaban @ CPU-100, untuk FQDN lokal:

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

Gary Pendlebury
sumber
4

Di PowerShell Core v6 (berfungsi di macOS, Linux dan Windows):

[Environment]::MachineName
felixfbecker
sumber
0

Sebuah analog dari kode file bat di Powershell

Cmd

wmic path Win32_ComputerSystem get Name

Powershell

Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name

dan ...

hostname.exe
Gosha
sumber