ChatGPT解决这个技术问题 Extra ChatGPT

如何在 PowerShell 中获取 localhost 名称?

如何在 PowerShell 中获取本地主机(机器)名称?我正在使用 PowerShell 1.0。


S
Strelok

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

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

$env:COMPUTERNAME


注意:如果您的 DNS 名称超过 15 个字符,则 [System.Net.Dns]::GetHostName()(不截断)优于 $env:COMPUTERNAME(截断)
在 Windows 10 Enterprise 上,env:COMPUTERNAME 产生了以下错误:env:COMPUTERNAME:术语“env:COMPUTERNAME”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在 line:1 char:1 + env:COMPUTERNAME + ~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (env:COMPUTERNAME:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
@mathisfun $env:COMPUTERNAME 在 Windows 10 上运行良好(请注意开头的美元符号)
$env:COMPUTERNAME 不适用于 Linux 和 macOS。但是,[Environment]::MachineName 可以。
j
jpaugh

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

PS> hostname
KEITH1

这是一个很好的答案,但是,如果您想将值保存在变量中,请使用接受的答案。
您可以按如下方式存储值 $name = $(hostname)
R
RaYell

长表:

get-content env:computername

简写:

gc env:computername

超短:$env:COMPUTERNAME
这将正常工作,直到您的服务器名称超过 15 个字符。
@GaryPendlebury 那会发生什么?
@Sajuuk computername 是 NetBIOS 名称,限制为 15 个字符。
g
grepit

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

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

G
Gary Pendlebury

对于本地 FQDN,对@CPU-100 的回答稍作调整:

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


f
felixfbecker

在 PowerShell Core v6(适用于 macOS、Linux 和 Windows)中:

[Environment]::MachineName

B
BillMux

hostname 在 Powershell 中也能正常工作


G
Garric

Powershell 中 bat 文件代码的类似物

命令

wmic path Win32_ComputerSystem get Name

电源外壳

Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name

和 ...

hostname.exe

G
Gucu112

对我来说最具描述性的方式是:

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

K
KentMarionVG

您可以按如下方式存储该值 $name = $(hostname)

我想补充一点,简单地执行 $name = hostname 也会将 PC 的本地主机名称保存到变量中。


这应该是一个评论。
这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review
T
T S

并非专门针对 Powershell 1.0 版及更多关于通过 Powershell 获取信息的不同可能方式的概述:

Native CmdLet(通常是最好的,但遗憾的是获取计算机名真的很慢):(Get-ComputerInfo).CsDNSHostName 返回“根据域名服务器的本地计算机名称”(关于 Get-ComputerInfo 的信息,关于其返回值的信息)

经典命令行可执行文件:hostname.exe 返回“计算机的完整计算机名称的主机名部分”(有关 hostname.exe 的信息

环境变量:$env:COMPUTERNAME

注册表:(Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName).ComputerName

静态 .Net 属性:[Environment]::MachineName 返回“此本地计算机的 NetBIOS 名称”。 (有关 System.Environment 类的信息)

COM-Object 的属性(通过已弃用的 Scripting-Api 的计算机名): (New-Object -ComObject WScript.Network).ComputerName 返回“计算机系统的名称”。 (有关 WshNetwork 对象的信息,有关 Windows 脚本宿主对象的信息)

WMI-Object 的属性:(Get-CimInstance -ClassName Win32_ComputerSystem).Name (关于 Win32_ComputerSystem 的信息)