none
différents paramètres DNS sur multiple cartes réseaux. RRS feed

  • Question

  • Bonjour,

    Je cherche a développer un script qui cochera ou décochera la case "register this connection's addresses in DNS" selon plusieurs cas :
    1) si on a une seule carte, la cache est coché
    2) si on a plusieurs cartes réseaux, si le réseau est "admin" on decoche, et le reseau est "prod" on décoche. 

    3) Max Powershell V2

    voici ce que j'ai commencé a faire, mais je bloque dans la dernière condition :

    cls
    #obtenir les cartes reseaux
    $NIC=(gwmi Win32_NetworkAdapterConfiguration|?{$_.ipenabled})
    #Obtenir les addresses IP des cartes reseaux
    #(gwmi Win32_NetworkAdapterConfiguration|?{$_.ipenabled}) | ForEach-Object {$_.ipaddress}
    $ipaddresses = (gwmi Win32_NetworkAdapterConfiguration|?{$_.ipenabled}) | ForEach-Object {$_.ipaddress}
    
    
    #comptage des cartes reseaux actives
    $ipcount = ($ipaddresses | measure).count
    $ipcount
    
    #Definir les subnets
    $prod_services_start = "10.6.37.0"
    $prod_services_end = "10.6.37.254"
    $manuf_start = "10.5.72.0"
    $manuf_end = "10.5.73.254"
    
    #Definir les ip des dns
    $DNSServers="10.5.40.40","10.6.37.19","10.6.39.51"
    
    #####################  Funtion test-ipaddressinrange #######################################
    function Test-IpAddressInRange {
        [CmdletBinding()]
        param (
            [Parameter(Position = 0, Mandatory = $true)][ipaddress]$from,
            [Parameter(Position = 1, Mandatory = $true)][ipaddress]$to,
            [Parameter(Position = 2, Mandatory = $true)][ipaddress]$target
        )
        $f=$from.GetAddressBytes()|%{"{0:000}" -f $_}   | & {$ofs='-';"$input"}
        $t=$to.GetAddressBytes()|%{"{0:000}" -f $_}   | & {$ofs='-';"$input"}
        $tg=$target.GetAddressBytes()|%{"{0:000}" -f $_}   | & {$ofs='-';"$input"}
        return ($f -le $tg) -and ($t -ge $tg)
    }
    
    # Example : 
    #Test-IpAddressInRange "192.168.0.1"  "192.168.0.100"  "192.168.0.1"
    #True
    #Test-IpAddressInRange "192.168.0.1"  "192.168.0.100"  "192.168.0.101"
    #False
    #############################################################################################
    #Test-IpAddressInRange $prod_services_start  $prod_services_end  "192.168.0.101"
    
    if ($ipcount -eq 1)
    {
    $NIC.SetDNSServerSearchOrder($DNSServers)
    $NIC.SetDynamicDNSRegistration($TRUE)
    }
    
    if ($ipcount -gt 1)
    {
    ForEach ($i in $ipaddresses)
    {
    #$i|ForEach-Object {$_.ipaddress}
    
    $test= Test-IpAddressInRange $prod_services_start  $prod_services_end  $i 
    #$test
    if ($test -eq "true")
    {
    
    Write-Host "true prod services" $i
    
    
    
    }
    else 
    {
    Write-Host "false pas prod services" $i}
    }
    
    }
    
    
    
    

    Toute aide sera la bienvenue.

    Merci et bonne journée.


    • Modifié bduhamel lundi 4 février 2019 08:42
    lundi 4 février 2019 08:40