Powershell Variável de passagem variável para System.Net.DNS

1

Recentemente, tenho trabalhado na tentativa de analisar uma série de servidores para informações de DNS. Eu não consigo passar corretamente a variável para a função. Chamar a função sozinha e passar uma variável funciona muito bem. o que estou perdendo? Por favor ajude.

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

Então, do código acima, se eu apenas executar o Get-DnsEntry "abc01.somenetwork.net" ele funciona. Se eu tentar passar uma variável para ela como acima, ela não encontrará o host.

    
por user2542412 04.02.2016 / 15:24

2 respostas

3

Evite usar aspas simples e duplas, por exemplo, '"string"'

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

ou

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

Ambos devem funcionar bem.

    
por 04.02.2016 / 15:52
0

Finalmente consegui trabalhar ...

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
    
por 10.02.2016 / 21:44