Have a Question?
Set IP Fixe
Fonction de récupération de Réseau Courant
function CurrentNetwork {
[hashtable]$return = @{}
$adapter = Get-NetAdapter | ? {$_.Status -eq "up"} -Verbose
$currentIP = ($adapter | Get-NetIPConfiguration).IPv4Address.IPAddress
$currentGateway = ($adapter | Get-NetIPConfiguration).IPv4DefaultGateway
$currentMask = ($adapter | Get-NetIPConfiguration).IPv4Address.PrefixLength
$currentDNS = $adapter | Get-DnsClientServerAddress -AddressFamily IPv4 | Select-Object ServerAddresses
$currentInterface = ($adapter | Get-NetIPConfiguration).InterfaceAlias
$currentIndex = ($adapter | Get-NetIPConfiguration).InterfaceIndex
$currentInterfaceAlias = ($adapter | Get-NetIPConfiguration).InterfaceAlias
$adaptateur = Get-CimInstance win32_networkadapterconfiguration | where {$_.IPAddress -ne $null} -Verbose
$currentDNSadresses = ""
foreach ($adress in $currentDNS.ServerAddresses)
{
$currentDNSadresses += $adress +" - "
}
$return.ip = $currentIP
$return.Gateway = $currentGateway.NextHop
$return.mask = $currentMask
$return.dns = $currentDNS.ServerAddresses
$return.name = $currentInterface
$return.index = $currentIndex
$return.InterfaceAlias = $currentInterfaceAlias
return $return
}
Fonction de Nouveaux DNS
function NewDNS {
Switch ($xml.conf.computer.pays)
{
"FR"
{
$newDNS = "123.45.67.89", "123.123.123.123"
}
"CA"
{
$newDNS = "123.45.67.99", "123.45.45.45"
}
default
{
$newDNS = "123.45.67.77", "123.67.67.67"
}
}
return $newDNS
}
Utilisation des 2 fonctions – stockage dans une variable
$currentNetwork = CurrentNetwork $nextDNS = NewDNS
Transformation du résultat DNS en String pour injection
$nextDNSString = ""
foreach($dns in $nextDNS)
{
if ($nextDNSString -eq "")
{
$nextDNSString = "'"+$dns.ToString()+"'"
}
else
{
$nextDNSString = $nextDNSString.ToString()+", '"+$dns.ToString()+"'"
}
}
#Si la carte ethernet n'est pas en DHCP, alors elle possède déjà une IP Fixe, donc on va lui changer en fonction de nos besoins
if (!(Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName localhost).DHCPEnabled)
{
Write-Host "IP fixe existante, changement ..."
Remove-NetIPAddress -IPAddress $currentNetwork.ip -Confirm:$false
New-NetIPAddress -InterfaceIndex $index -AddressFamily IPv4 -IPAddress $NewIp -PrefixLength $NewMask
Write-Host "Nouvelle IP: $NewIp"
}
#Sinon la carte est en DHCP, alors on va la passer en IP fixe avec les informations demandées
else
{
Write-Host "Nouvelle IP Fixe ..."
Start-Process powershell -Verb runas -ArgumentList "New-NetIPAddress –InterfaceIndex $index –IPAddress $NewIp -DefaultGateway $NewGateway –PrefixLength $NewMask" -Verbose
$cmd = '"Set-DnsClientServerAddress -InterfaceIndex '+ $index +' -ServerAddresses ('+$nextDNSString+')"'
$processDNS = Start-Process powershell -Verb runas -ArgumentList ($cmd) -WindowStyle Hidden
$processDNS.ExitCode
Write-Host "Nouvelle IP: $NewIp"
}