Возможности передачи функций Powershell для System.Net.DNS

Недавно я пытался проанализировать информацию 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», он работает. Если я попытаюсь передать ему переменную, как указано выше, он не сможет найти хост.

1
задан 4 February 2016 в 16:24
2 ответа

Наконец-то он заработал ....

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
0
ответ дан 3 December 2019 в 18:36

Пожалуйста, избегайте использования как одинарных, так и двойных кавычек, , например, "string"

$computer = 'abc01.somenetwork.net'
Get-DnsEntry $computer

или

$computer = "abc01.somenetwork.net"
Get-DnsEntry $computer

Оба должны работать нормально.

3
ответ дан 3 December 2019 в 18:36

Теги

Похожие вопросы