如何在 PowerShell 中获取本地主机(机器)名称?我正在使用 PowerShell 1.0。
您可以只使用 .NET Framework 方法:
[System.Net.Dns]::GetHostName()
还
$env:COMPUTERNAME
不要忘记所有旧的控制台实用程序都可以在 PowerShell 中正常工作:
PS> hostname
KEITH1
$name = $(hostname)
长表:
get-content env:computername
简写:
gc env:computername
computername
是 NetBIOS 名称,限制为 15 个字符。
以上所有问题都是正确的,但如果您想要主机名和域名,请尝试以下操作:
[System.Net.DNS]::GetHostByName('').HostName
对于本地 FQDN,对@CPU-100 的回答稍作调整:
[System.Net.DNS]::GetHostByName($Null).HostName
在 PowerShell Core v6(适用于 macOS、Linux 和 Windows)中:
[Environment]::MachineName
hostname
在 Powershell 中也能正常工作
Powershell 中 bat 文件代码的类似物
命令
wmic path Win32_ComputerSystem get Name
电源外壳
Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name
和 ...
hostname.exe
对我来说最具描述性的方式是:
[System.Net.DNS]::GetHostByName($env:COMPUTERNAME).HostName
您可以按如下方式存储该值 $name = $(hostname)
我想补充一点,简单地执行 $name = hostname
也会将 PC 的本地主机名称保存到变量中。
并非专门针对 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 的信息)
不定期副业成功案例分享
[System.Net.Dns]::GetHostName()
(不截断)优于$env:COMPUTERNAME
(截断)$env:COMPUTERNAME
在 Windows 10 上运行良好(请注意开头的美元符号)$env:COMPUTERNAME
不适用于 Linux 和 macOS。但是,[Environment]::MachineName
可以。