Comment obtenir le nom de l'hôte local dans PowerShell?

181

Comment obtenir le nom de l'hôte local (machine) dans PowerShell? J'utilise PowerShell 1.0.

George2
la source

Réponses:

260

Vous pouvez simplement utiliser la méthode .NET Framework:

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

aussi

$env:COMPUTERNAME

Strelok
la source
5
Remarque: si votre nom DNS [System.Net.Dns]::GetHostName()contient plus de 15 caractères, (ne tronque pas) est meilleur que $env:COMPUTERNAME(tronque)
sonjz
Sous Windows 10 Entreprise, env: COMPUTERNAME a généré l'erreur suivante: env: COMPUTERNAME: le terme «env: COMPUTERNAME» n'est pas reconnu comme le nom d'une applet de commande, d'une fonction, d'un fichier de script ou d'un programme utilisable. Vérifiez l'orthographe du nom ou, si un chemin était inclus, vérifiez que le chemin est correct et réessayez. À la ligne: 1 car: 1 + env: COMPUTERNAME + ~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (env: COMPUTERNAME: String) [], CommandNotFoundException + FullyQualifiedErrorId:
CommandNotFoundException
2
@mathisfun $env:COMPUTERNAMEfonctionne bien sur Windows 10 (veuillez noter le signe dollar au début)
oleksa
$env:COMPUTERNAMEne fonctionnera pas sous Linux et macOS. Cependant, [Environment]::MachineNamefait.
felixfbecker
62

N'oubliez pas que tous vos anciens utilitaires de console fonctionnent très bien dans PowerShell:

PS> hostname
KEITH1
jpaugh
la source
C'est une bonne réponse, cependant, si vous souhaitez enregistrer la valeur dans une variable, utilisez la réponse acceptée.
Yawar Murtaza
37

Forme longue:

get-content env:computername

Forme courte:

gc env:computername
RaYell
la source
17
supershort: $ env: COMPUTERNAME
Ross Presser
Cela fonctionnera bien, jusqu'à ce que vous ayez un serveur avec un nom de plus de 15 caractères.
Gary Pendlebury
@GaryPendlebury que va-t-il se passer alors?
Sajuuk
@Sajuuk computernameest le nom NetBIOS, limité à 15 caractères.
Gary Pendlebury
14

Toutes les questions ci-dessus sont correctes, mais si vous voulez le nom d'hôte et le nom de domaine, essayez ceci:

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

Un léger ajustement sur la réponse de @ CPU-100, pour le FQDN local:

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

Gary Pendlebury
la source
4

Dans PowerShell Core v6 (fonctionne sur macOS, Linux et Windows):

[Environment]::MachineName
Felixfbecker
la source
0

Un analogue du code de fichier chauve-souris dans Powershell

Cmd

wmic path Win32_ComputerSystem get Name

Powershell

Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name

et ...

hostname.exe
Gosha
la source