为什么Resolve-DnsName
不被认可PowerShell Core
?据我记得它PowerShell
本身工作得很好。
这是一个.NET
对抗dotnet
问题吗?根本dotnet
就没有这个功能吗?
thufir@dur:~/powershell/webservicex$
thufir@dur:~/powershell/webservicex$ dotnet --version
2.1.4
thufir@dur:~/powershell/webservicex$
thufir@dur:~/powershell/webservicex$ ./dns.ps1
Resolve-DnsName : The term 'Resolve-DnsName' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At /home/thufir/powershell/webservicex/dns.ps1:3 char:1
+ Resolve-DnsName -Name localhost -Type ANY | Format-Table -AutoSize
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Resolve-DnsName:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
thufir@dur:~/powershell/webservicex$
thufir@dur:~/powershell/webservicex$ cat dns.ps1
#!/usr/bin/pwsh -Command
Resolve-DnsName -Name localhost -Type ANY | Format-Table -AutoSize
thufir@dur:~/powershell/webservicex$
答案1
有一个名为 的跨平台模块DnsClient-PS
,该模块中的命令名称为Resolve-Dns
。它的功能与以下有点不同Resolve-DnsName
:
> Find-Module -Name PowerShellGet | Install-Module
> Get-PSRepository
Name InstallationPolicy SourceLocation
---- ------------------ --------------
PSGallery Untrusted https://www.powershellgallery.com/api/v2
> Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
> Get-PSRepository
Name InstallationPolicy SourceLocation
---- ------------------ --------------
PSGallery Trusted https://www.powershellgallery.com/api/v2
> Install-Module -Name DnsClient-PS
> Resolve-Dns google.com | Select-Object -Expand Answers
DomainName TimeToLive RecordClass RecordType RecordData
---------- ---------- ----------- ---------- ----------
google.com. 401 IN A 64.233.185.102
google.com. 401 IN A 64.233.185.139
google.com. 401 IN A 64.233.185.138
google.com. 401 IN A 64.233.185.113
google.com. 401 IN A 64.233.185.101
google.com. 401 IN A 64.233.185.100
答案2
来自PowerShell Core 6.0 中的新增功能文档,在“向后兼容性”部分:
作为 Windows 一部分提供的大多数模块(例如,DnsClient、Hyper-V、NetTCPIP、存储等)以及包括 Azure 和 Office 在内的其他 Microsoft 产品尚未明确移植到 .NET Core。 PowerShell 团队正在与这些产品组和团队合作,验证其现有模块并将其移植到 PowerShell Core。对于 .NET Standard 和 CDXML,许多传统的 Windows PowerShell 模块似乎确实可以在 PowerShell Core 中工作,但它们尚未经过正式验证,也未得到正式支持。
虽然 Powershell Core 已正式发布,但它仍然是一项正在进行的工作。
答案3
为了使 cmdletResolve-DnsName
在 PS 6 中工作,您必须首先导入或安装它。
你可以先尝试一下Install-Module -Name DnsClient
。它将使用默认的包管理器从 psgallery 中下载并安装它。
然后,Import-Module -Name "DnsClient"
将其拉进去。
然后您的Resolve-DnsName
cmdlet 应该可以运行。
您还可以使用Test-NetConnection
NetTCPIP 模块中的各种参数来解析。