Windows 10 Script for ICS bug in windows 10

  • Thread starter Thread starter AlexandreRenoux1
  • Start date Start date
A

AlexandreRenoux1

Bonjour,


j'ai crée un petit script qui peux vous aider à réglé le soucis de Internet Connection Sharing. Il faut le mettre en tache planifier au démarrage,

il vous faudra modifier le nom de l'interface à match, ici je partage une connexion VPN.



#Get des info sur la carte reseau physique et viruel (VPN)
$MainAdapter = Get-NetAdapter | Where-Object {$_.InterfaceDescription -match 'Realtek'}
$VpnAdapter = Get-NetAdapter | Where-Object {$_.InterfaceDescription -match 'TAP'}

#Récuperation des elements utile pour la suite
$id_carte_physique = $MainAdapter.ifIndex
$alias_carte_physique = $MainAdapter.InterfaceAlias
$alias_carte_virtuel = $VpnAdapter.InterfaceAlias

#Recuperation de l'adresse IP/GW de la carte physique
$ip_physique = (Get-NetIPAddress -InterfaceIndex $id_carte_physique).IPAddress
$GW_physique = (Get-NetIPConfiguration -InterfaceIndex $id_carte_physique).IPv4DefaultGateway.NextHop

#Inscription de la dll pour l'objet HNetCfg.HNetShare
regsvr32 hnetcfg.dll /s

#Reset ICS
$m = New-Object -ComObject HNetCfg.HNetShare
if ($m.EnumEveryConnection -ne $null) {

$pubConn = $m.EnumEveryConnection | where {$m.NetConnectionProps.Invoke($_).Name -eq $alias_carte_physique}
$privConn = $m.EnumEveryConnection | where {$m.NetConnectionProps.Invoke($_).Name -eq $alias_carte_virtuel}

$pubConnConf = $m.INetSharingConfigurationForINetConnection.Invoke($pubConn)
$privConnConf = $m.INetSharingConfigurationForINetConnection.Invoke($privConn)

$pubConnConf.DisableSharing()
$privConnConf.DisableSharing()

$pubConnConf.EnableSharing(1)
$privConnConf.EnableSharing(0)
}

#Suppresion de l'adresse ICS par défaut
Remove-NetIPAddress –InterfaceIndex $id_carte_physique –IPAddress 192.168.137.1 –PrefixLength 24 -confirm:$false

#Assignation IP/GW/DNS Physique
New-NetIPAddress –InterfaceIndex $id_carte_physique –IPAddress $ip_physique –PrefixLength 24 –DefaultGateway 172.20.19.1
Set-DnsClientServerAddress –InterfaceIndex $id_carte_physique -ServerAddresses $GW_physique -confirm:$false


#Suppression des doublons des regles de firewall
$all_firewall_rules = Get-NetFirewallRule

$Array_rules = @()

foreach ($firewall_rule in $all_firewall_rules)
{
$unique = $true
foreach($rule in $Array_rules)
{

if($firewall_rule.DisplayName -eq $rule.DisplayName)
{
if($firewall_rule.Profiles -eq $rule.Profiles)
{
$unique = $false

}
}
CS
}
if($unique)
{
$temp_rules = New-Object System.Object
$temp_rules | Add-Member -type NoteProperty -name DisplayName -value $firewall_rule.DisplayName
$temp_rules | Add-Member -type NoteProperty -name Profiles -value $firewall_rule.Profiles
$Array_rules += $temp_rules
}
else
{
Remove-NetFirewallRule -name $firewall_rule.Name
write-host "Suppresion " $firewall_rule.displayName

}
}


Il désactive et reactive un partage réseaux, assigne l'IP et supprime les doublons du firewall.


Bye :)

Continue reading...
 
Back
Top