如何从MacOS上的powershell获取主机名?

如何从MacOS上的powershell获取主机名?,macos,powershell,parsing,hostname,Macos,Powershell,Parsing,Hostname,在Windows的Powershell脚本中,我有以下行: $etcdBaseUrl = "http://$env:computername.local:4001/v2/keys"; 当我在终端中键入:hostname时,它返回计算机名,如:User1234.local 现在我正试图在Mac OS上的Powershell中运行它。我已尝试将参数$env:computername.local替换为$env:hostname,但收到此错误 错误:“无效URI:无法分析主机名。” 这在linux上适

在Windows的Powershell脚本中,我有以下行:

$etcdBaseUrl = "http://$env:computername.local:4001/v2/keys";
当我在终端中键入:
hostname
时,它返回计算机名,如:
User1234.local

现在我正试图在Mac OS上的Powershell中运行它。我已尝试将参数
$env:computername.local
替换为
$env:hostname
,但收到此错误

错误:“无效URI:无法分析主机名。”


这在linux上适用于我:

"http://"+(get-content env:HOSTNAME)+":4001/v2/keys"
问题是Linux上的主机名填充不正确,因此我得到以下结果:

http://localhost.localdomain:4001/v2/keys

这在macOS Catalina上对我很有效:

$(hostname)
(它是与bash语法“hostname”等效的PowerShell)


注意:其他建议的答案不起作用,因为macOS上不存在环境变量
$HOSTNAME
:您必须运行命令
HOSTNAME

HOSTNAME该命令无法始终正确解析,因为它似乎是一个反向dns查找响应。要获取实际的计算机名,请在powershell cmd上使用此命令行:

(scutil --get LocalHostName)
也可以在如下字符串中使用:

write-host "The Machine Name is: $(scutil --get LocalHostName)"

尝试“echo$HOSTNAME”此命令的问题是HOSTNAME命令执行反向IP查找,可能不正确。请改用此命令:$(scutil--获取本地主机名)