Недавно я пытался проанализировать информацию DNS через ряд серверов. Кажется, я не могу правильно передать переменную функции. Вызов самой функции и передача переменной работает нормально. Что мне не хватает? Пожалуйста, помогите.
Function Get-DnsEntry($computer)
{
If($computer -match "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$")
{
[System.Net.Dns]::GetHostEntry($computer).HostName
}
ElseIf( $computer -match "^.*\.\.*")
{[System.Net.Dns]::GetHostEntry($computer).AddressList[0].IPAddressToString}
ELSE { Throw "Specify either an IP V4 address or a hostname" }
}
$computer = '"abc01.somenetwork.net"'
Get-DnsEntry $computer
Итак, из приведенного выше кода если я просто запустил Get-DnsEntry «abc01.somenetwork.net», он работает. Если я попытаюсь передать ему переменную, как указано выше, он не сможет найти хост.
Наконец-то он заработал ....
Function Get-DnsEntry
{[cmdletbinding()]param([string]$computer)
if($computer -match "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$")
{
[string]$hostname = $computer
[Net.Dns]::GetHostEntry($hostname).HostName
}
elseif( $computer -match "^.*\.\.*")
{
[string]$hostname = $computer
[Net.Dns]::resolve($hostname).AddressList[0].IPAddressToString
}
else{ Throw "Specify either an IP V4 address or a hostname" }
}
[string]$hostname = 'abc01.somenetwork.net'
Get-DnsEntry $server -Verbose
Пожалуйста, избегайте использования как одинарных, так и двойных кавычек, , например, "string"
$computer = 'abc01.somenetwork.net'
Get-DnsEntry $computer
или
$computer = "abc01.somenetwork.net"
Get-DnsEntry $computer
Оба должны работать нормально.