none
Validar IP do Computador RRS feed

  • Pergunta

  • Boa Tarde.

    Pessoal, como consigo validar o resultado do script abaixo.

    $computername = "teste"
    get-wmiobject win32_networkadapterconfiguration -filter "IPEnabled='True'" -computer $computername | Select @{Name="IPv4";Expression={ $_.IPAddress -match $ip4}}

    #Resultado do Comando:

    IPv4                                                                                                                                                                                                                ----                                                                                                                                                                                                              
    {10.101.14.52, fe80::986d:6177:3ff5:c738}

    Gostaria de testar o resultado desse comando verificando se ele faz parte de um determinado range ou vlan.

    if ($testewifi -match '10.100.')
    {
    Write-Host "Conexao é Wifi"
    }
    else {
    write-host "Conexao é cabeada"
    }

    Tentei usar a sintaxe abaixo sem sucesso:

    $computername = "teste"
    $testewifi = get-wmiobject win32_networkadapterconfiguration -filter "IPEnabled='True'" -computer $computername | Select @{Name="IPv4";Expression={ $_.IPAddress -match $ip4}}

    O resultado de write-host $testewifi é  @{IPv4=System.Object[]}

    Como posso solucionar este problema.

    Grato
    • Editado JefersonL quarta-feira, 2 de outubro de 2013 16:51
    quarta-feira, 2 de outubro de 2013 16:48

Respostas

  • Jeferson,

    Fiz algumas modificações mas que no final acho que chega no resultado que você quer.

    #Recupera Lista de IPs
    $h="teste"
    $ListaIPs = [Net.DNS]::GetHostAddresses($h) | 
        ? {$_.AddressFamily -eq 'InterNetwork'} | 
        select IPAddressToString
    
    #Transforma Resultado em um Array
    $testewifi=@()
    $ListaIPs | % {$testewifi += $_.IPAddressToString}
    
    
    #Verifica se faz parte de subrede
    if ($testewifi -like '10.100.*')
    {
        Write-Host "Conexao é Wifi"
    }
    else {
        write-host "Conexao é cabeada"
    }

    As principais modificações:

    1.Usei um objeto .net ao invés do get-wmi

    2.Transformei o resultado em uma array

    3.ao invés de usar o match eu usei o LIKE, o match procura como se fosse o Like usando astericos dos dois lados da string, mas para saber a subrede eu prefiro deixar o asterisco no final.


    Fábio de Paula Junior


    • Editado Fábio JrModerator quinta-feira, 3 de outubro de 2013 00:16
    • Marcado como Resposta JefersonL quinta-feira, 3 de outubro de 2013 10:37
    quinta-feira, 3 de outubro de 2013 00:14
    Moderador

Todas as Respostas

  • Jeferson,

    Fiz algumas modificações mas que no final acho que chega no resultado que você quer.

    #Recupera Lista de IPs
    $h="teste"
    $ListaIPs = [Net.DNS]::GetHostAddresses($h) | 
        ? {$_.AddressFamily -eq 'InterNetwork'} | 
        select IPAddressToString
    
    #Transforma Resultado em um Array
    $testewifi=@()
    $ListaIPs | % {$testewifi += $_.IPAddressToString}
    
    
    #Verifica se faz parte de subrede
    if ($testewifi -like '10.100.*')
    {
        Write-Host "Conexao é Wifi"
    }
    else {
        write-host "Conexao é cabeada"
    }

    As principais modificações:

    1.Usei um objeto .net ao invés do get-wmi

    2.Transformei o resultado em uma array

    3.ao invés de usar o match eu usei o LIKE, o match procura como se fosse o Like usando astericos dos dois lados da string, mas para saber a subrede eu prefiro deixar o asterisco no final.


    Fábio de Paula Junior


    • Editado Fábio JrModerator quinta-feira, 3 de outubro de 2013 00:16
    • Marcado como Resposta JefersonL quinta-feira, 3 de outubro de 2013 10:37
    quinta-feira, 3 de outubro de 2013 00:14
    Moderador
  • Jeferson,

    Fiz algumas modificações mas que no final acho que chega no resultado que você quer.

    #Recupera Lista de IPs
    $h="teste"
    $ListaIPs = [Net.DNS]::GetHostAddresses($h) | 
        ? {$_.AddressFamily -eq 'InterNetwork'} | 
        select IPAddressToString
    
    #Transforma Resultado em um Array
    $testewifi=@()
    $ListaIPs | % {$testewifi += $_.IPAddressToString}
    
    
    #Verifica se faz parte de subrede
    if ($testewifi -like '10.100.*')
    {
        Write-Host "Conexao é Wifi"
    }
    else {
        write-host "Conexao é cabeada"
    }

    As principais modificações:

    1.Usei um objeto .net ao invés do get-wmi

    2.Transformei o resultado em uma array

    3.ao invés de usar o match eu usei o LIKE, o match procura como se fosse o Like usando astericos dos dois lados da string, mas para saber a subrede eu prefiro deixar o asterisco no final.


    Fábio de Paula Junior


    Valeu Fábio funcionou perfeitamente aqui.

    quinta-feira, 3 de outubro de 2013 10:38