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.
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.
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.
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