如何在PowerShell中获得localhost名称?


187

如何在PowerShell中获得localhost(计算机)名称?我正在使用PowerShell 1.0。

Answers:


272

您可以只使用.NET Framework方法:

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

$env:COMPUTERNAME


6
注意:如果您的DNS名称超过15个字符,[System.Net.Dns]::GetHostName()(不截断)比$env:COMPUTERNAME(截断)更好
sonjz

在Windows 10企业版上,env:COMPUTERNAME产生以下错误:env:COMPUTERNAME:术语'env:COMPUTERNAME'不被识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径,请验证路径是否正确,然后重试。在第1行:char:1 + env:COMPUTERNAME + ~~~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound:(env:COMPUTERNAME:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException
mathisfun

3
@mathisfun$env:COMPUTERNAME在Windows 10上运行良好(请注意开头的美元符号)
oleksa

1
$env:COMPUTERNAME在Linux和macOS上将无法使用。但是,[Environment]::MachineName确实如此。
felixfbecker

65

不要忘记,所有旧的控制台实用程序在PowerShell中都可以正常工作:

PS> hostname
KEITH1

这是一个很好的答案,但是,如果要将值保存在变量中,请使用接受的答案。
Yawar Murtaza

38

长表:

get-content env:computername

简写:

gc env:computername

18
supershort:$ env:COMPUTERNAME
Ross

直到您使用名称长度超过15个字符的服务器,此方法才能正常工作。
加里·彭德伯利

@GaryPendlebury然后会发生什么?
Sajuuk

@Sajuukcomputername是NetBIOS名称,最多15个字符。
加里·彭德伯里

15

以上所有问题都是正确的,但是如果您想要主机名和域名,请尝试以下操作:

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

5

在PowerShell Core v6(可在macOS,Linux和Windows上运行)中:

[Environment]::MachineName


0

Powershell中bat文件代码的类似物

Cmd

wmic path Win32_ComputerSystem get Name

电源外壳

Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name

还有...

hostname.exe

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.