[玩转系统] 在 PowerShell 中获取完全合格的域名 [7 种方法]
作者:精品下载站 日期:2024-12-14 05:31:38 浏览:13 分类:玩电脑
在 PowerShell 中获取完全合格的域名 [7 种方法]
使用环境变量
使用环境变量获取完全限定的域名。
使用环境变量:
$computer_name = $env:COMPUTERNAME
$fqdn = $env:USERDNSDOMAIN
Write-Output "Fully Qualified Domain Name: $computer_name.$fqdn"
输出 :
Fully Qualified Domain Name: MAS-DC-01.MASLAB.COM
首先,我们将环境变量 ($evn:COMPUTERNAME
) 的值分配给 $computer_name
变量。环境变量COMPUTERNAME
存储了当前计算机的名称,或者你可以说出当前主机的名称;两者意思相同。
然后,我们将 $env:USERDNSDOMAIN
环境变量的值分配给 $fqdn
变量。此处,USERDNSDOMAIN
存储与当前用户关联的 DNS 域名。这意味着它指示用户帐户注册的域名。
最后,我们通过用点分隔来连接 $computer_name
和 $fqdn
的值。我们使用 Write-Output
cmdlet 将其显示在 PowerShell 控制台上。
使用 System.Net.Dns 类
使用System.Net.Dns
类获取完全限定的域名。
使用 System.Net.Dns 类:
$host_name = [System.Net.Dns]::GetHostName()
$ip_addresses = [System.Net.Dns]::GetHostAddresses($host_name)
foreach ($current_ip in $ip_addresses) {
if ($current_ip.AddressFamily -eq 'InterNetwork') {
$fqdn = [System.Net.Dns]::GetHostEntry($current_ip).HostName
break
}
}
Write-Output "Fully Qualified Domain Name: $fqdn"
输出 :
Fully Qualified Domain Name: MAS-DC-01.maslab.com
使用 Dns 类调用 GetHostName()
方法。我们用它来检索本地计算机名称,该名称进一步分配给 $host_name
变量。
我们使用了另一个名为 GetHostAddresses()
的方法,向其提供 $host_name
作为参数,以获取与 $host_name
关联的所有 IP 地址的数组代码>.我们将此数组存储在 $ip_addresses
变量中。
然后,我们使用 foreach
循环来循环 $ip_addresses
数组。在每次迭代中,我们使用 if
语句和 -eq
(等于)运算符来确定某个地址族 (AddressFamily
) 是否为当前 IP 地址 ($current_ip
) 等于 InterNetwork
,类似于 IPv4 地址。
如果满足要求,则使用 GetHostEntry()
方法,该方法需要 $current_ip
参数来创建 System.Net.IPHostEntry
对象。我们使用 System.Net.IPHostEntry 对象的 HostName 属性来获取 FQDN,该 FQDN 存储在 $fqdn 变量中。接下来,我们使用 break
语句退出循环。
为什么我们退出 for
循环?因为我们只想使用第一个 IPv4 地址来获取 FQDN。最后,我们使用 Write-Output
cmdlet 在控制台上打印 $fqdn
。
以下是单行解决方案:
使用 System.Net.Dns 类:
[System.Net.Dns]::GetHostEntry($env:COMPUTERNAME).HostName
#OR
[System.Net.Dns]::GetHostEntry([string]"localhost").HostName
输出 :
MAS-DC-01.maslab.com
MAS-DC-01.maslab.com
根据文档,GetHostByName()
和 Resolve()
方法已被弃用。
使用 ping
命令
使用ping
命令获取完全限定的域名。
使用 ping 命令:
$fqdn= $(ping localhost -n 1)[1].split(" ")[1]
Write-Output "Fully Qualified Domain Name: $fqdn"
输出 :
Fully Qualified Domain Name: MAS-DC-01.maslab.com
我们使用了 ping
命令,这是一个 PowerShell 命令,通过 ping 主机名并解析结果来获取本地计算机的 FQDN。在上面的示例中,ping
是如何工作的? ping localhost -n 1
用于 ping 本地计算机一次以检索主机名和 IP 地址。
然后,我们使用命令替换 ($ (...)
) 来捕获 ping localhost -n 1
命令的输出;但是,[1]
获取了捕获的输出的第二行,其中包含主机名。此外,我们链接了 split(" ") 方法,使用空格作为分隔符将第二行拆分为单词数组,并通过访问 1 检索第二个单词(主机名)
索引为[1]
。
我们将最终输出存储在 $fqdn
变量中,该变量进一步与 Write-Output
cmdlet 一起使用,以在 PowerShell 控制台上打印其值。
如果您不访问索引 1
两次,如上例所示,您将获得更详细的输出,包括有关数据包的信息(发送、接收、丢失)、往返时间(最小、最大、平均值)等
使用 Get-WmiObject Cmdlet
使用 Get-WmiObject
cmdlet 获取完全限定的域名。
使用 Get-WmiObject Cmdlet:
$computer_name = $env:COMPUTERNAME
$wmi_obj = Get-WmiObject -Class Win32_ComputerSystem -Namespace 'root\CIMv2'
$domain_name = $wmi_obj.Domain
Write-Output "Fully Qualified Domain Name: $computer_name.$domain_name"
输出 :
Fully Qualified Domain Name: MAS-DC-01.maslab.com
我们首先使用 $env:COMPUTERNAME
环境变量来获取本地计算机的计算机名称,并将其保存在 $computer_name
变量中。请记住,$env:COMPUTERNAME
包含当前计算机的名称。
然后,我们使用 Get-WmiObject cmdlet 查询 Windows Management Instrumentation 以获取有关计算机系统的详细信息;特别是,我们针对 root\CIMv2
命名空间的 Win32_ComputerSystem
类,其中包含有关计算机操作系统和硬件的不同属性。我们将详细信息存储在 $wmi_obj
变量中。这里,$wmi_obj
表示 WMI 对象。
我们分别使用 -Class
和 -NameSpace
参数指定了 Win32_ComputerName
类和 'root\CIMv2'
命名空间。
此外,我们使用此变量来访问其 Domain
属性的值,该属性表示计算机加入的 Active Directory 域的名称。结果值存储在 $domain_name
变量中。最后,我们使用 Write-Output
cmdlet 在 PowerShell 控制台上打印完全限定的域名。
或者,我们可以使用 Get-WmiObject
cmdlet 的别名,如下所示:
使用 Get-WmiObject Cmdlet:
(gwmi -Class Win32_ComputerSystem).DNSHostName+"."+(gwmi -Class Win32_ComputerSystem).Domain
输出 :
MAS-DC-01.maslab.com
在这里,我们使用 .DNSHostName
和 .Domain
属性来获取本地计算机的计算机名称和本地计算机加入的域。我们使用连接运算符 (+
) 将两者连接起来,并用点 (.
) 分隔它们。
使用 Get-CimInstance
Cmdlet
使用Get-CimInstance
cmdlet 获取完全限定的域名。如果您使用的是 PowerShell 3.0+,请继续执行以下解决方案。为什么?从 PowerShell 3.0 开始,Get-WmiObject
已被 Get-CimInstance
取代。请记住,您只能在 Windows 平台上使用 Get-CimInstance
。
使用 Get-CimInstance Cmdlet:
(Get-CimInstance -Class Win32_ComputerSystem).Name+"."+(Get-CimInstance -ClassWin32_ComputerSystem).Domain
输出 :
MAS-DC-01.maslab.com
此代码段类似于上一节中学到的最后一个示例,但我们使用 GetCimInstance cmdlet 来检索有关 Win32_ComputerSystem
类的信息。我们使用 .Name
和 .Domain
属性来获取本地计算机的名称以及该计算机加入的域。
使用 Get-ADComputer
Cmdlet
使用Get-ADComputer
cmdlet 获取完全限定的域名。您必须在计算机上安装 Active Directory 才能使用此 cmdlet。
使用 Get-ADComputer Cmdlet:
$fqdn = (Get-ADComputer $(hostname)).DNSHostName
Write-Output "Fully Qualified Domain Name: $fqdn"
输出 :
Fully Qualified Domain Name: MAS-DC-01.maslab.com
上述命令使用 Active Directory 模块检索本地计算机的 DNS 主机名。效果如何?我们使用 hostname
命令作为 $ (hostname)
来获取本地计算机的主机名,该主机名被指定为 Get-ADComputer cmdlet 的参数。
然后,Get-ADComputer
cmdlet 访问有关 Active Directory 中计算机对象的信息。最后,我们使用 DNSHostName
属性来获取计算机对象的 DNS 主机名。我们将结果值分配给 $fqdn
变量,以便使用 Write-Output
cmdlet 将其进一步显示在控制台上。
使用注册表
使用注册表获取完全限定的域名。如果您的计算机上安装了 Active Directory,则可以使用此解决方案。
使用注册表:
$domain_name = (Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters').Domain
$computer_name = $env:COMPUTERNAME
$fqdn = "$computer_name.$domain_name"
Write-Output "Fully Qualified Domain Name: $fqdn"
输出 :
Fully Qualified Domain Name: MAS-DC-01.maslab.com
我们使用 Get-ItemProperty cmdlet 访问‘HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters’ 注册表项来检索其属性。我们用于此代码的注册表项包含与网络相关的配置设置。
我们使用 .Domain
属性来检索计算机的域名。当计算机连接到 Active Directory 域时,通常会在注册表中设置此域名。我们将 .Domain
属性的值存储在 $domain_name
变量中。
之后,我们使用 $env:COMPUTERNAME
获取本地计算机的名称并将其存储在 $computer_name
变量中。接下来,我们使用点 (.
) 分隔 $computer_name
和 $domain_name
,并将连接后的值分配给 >$fqdn
变量,进一步与 Write-Output 一起使用以将其显示在 PowerShell 控制台上。
这就是如何在 PowerShell 中获取完全限定域名的全部内容。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag