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.