Resolve-DnsName:术语“Resolve-DnsName”未被识别为 cmdlet 的名称

Resolve-DnsName:术语“Resolve-DnsName”未被识别为 cmdlet 的名称

为什么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-DnsNamecmdlet 应该可以运行。

您还可以使用Test-NetConnectionNetTCPIP 模块中的各种参数来解析。

相关内容