Je peux le faire manuellement en cliquant avec le bouton droit de la souris sur une connexion réseau, en ouvrant l'onglet Partage et en cliquant sur la case à cocher "Autoriser les autres utilisateurs du réseau à se connecter via la connexion Internet de cet ordinateur".
Maintenant, je dois automatiser cette tâche. Existe-t-il un outil de ligne de commande ou une applet de commande Powershell pour accomplir cela?
Voici une solution purement PowerShell (qui devrait être exécutée avec des privilèges d’administrateur):
# Register the HNetCfg library (once)
regsvr32 hnetcfg.dll
# Create a NetSharingManager object
$m = New-Object -ComObject HNetCfg.HNetShare
# List connections
$m.EnumEveryConnection |% { $m.NetConnectionProps.Invoke($_) }
# Find connection
$c = $m.EnumEveryConnection |? { $m.NetConnectionProps.Invoke($_).Name -eq "Ethernet" }
# Get sharing configuration
$config = $m.INetSharingConfigurationForINetConnection.Invoke($c)
# See if sharing is enabled
Write-Output $config.SharingEnabled
# See the role of connection in sharing
# 0 - public, 1 - private
# Only meaningful if SharingEnabled is True
Write-Output $config.SharingType
# Enable sharing (0 - public, 1 - private)
$config.EnableSharing(0)
# Disable sharing
$config.DisableSharing()
Voir également cette question à l'adresse social.msdn.Microsoft.com :
Vous devez activer l'interface publique sur l'adaptateur auquel vous vous connectez et activer le partage sur l'interface privée pour l'adaptateur que vous souhaitez pouvoir utiliser pour le réseau.
J'ai créé un outil de ligne de commande simple pour cela.
Téléchargez et décompressez ou git clone [email protected]:utapyngo/icsmanager.git
Construire en exécutant build.cmd
Enregistrez la bibliothèque HNetCfg
COM: regsvr32 hnetcfg.dll
(il s'agit d'une bibliothèque standard située à %WINDIR%\System32
)
Ouvrez la ligne de commande Invite en tant qu'administrateur
cd
dans le répertoire icsmanager
(ou icsmanager-master
si vous avez téléchargé Zip).
Tapez icsmanager
Cela devrait afficher les connexions réseau disponibles. Notez l'attribut GUID. Pour utiliser cet outil, vous devez avoir au moins deux connexions.
Tapez icsmanager enable {GUID-OF-CONNECTION-TO-SHARE} {GUID-OF-HOME-CONNECTION}
Cela devrait permettre à ICS.
Module d'importation:
Module d'importation IcsManager.dll
Liste des connexions réseau:
Get-NetworkConnections
Démarrer le partage de connexion Internet:
Enable-ICS "Connexion à partager" "Connexion à domicile"
Arrêter le partage de connexion Internet:
Désactiver-ICS
Avertissement: je n'ai pas encore testé l'outil. Utilisez à vos risques et périls. N'hésitez pas à ouvrir un problème sur GitHub si quelque chose ne fonctionne pas. Les demandes de tirage sont également les bienvenues.
À ma connaissance, la fonctionnalité de routage a été supprimée de Windows depuis Vista et n’est disponible que sous Windows Server.
L'astuce suivante peut être trouvée sur Internet pour réactiver netsh routing
, que vous pouvez essayer à vos propres risques. Je suggère d’abord les précautions habituelles, notamment la création d’un point de restauration du système.
Exécuter dans l'invite de commande (cmd) en tant qu'administrateur:
netsh add helper ipmontr.dll
netsh add helper ippromon.dll
Vous devrez peut-être également définir le service Routage et accès à distance sur Démarrage automatique.
Redémarrez avant d'essayer quoi que ce soit.
Un ancien collègue à moi avait l'habitude de le faire via l'outil propre de la fenêtre, Windows. Comme je ne l'ai jamais fait moi-même, je peux vous conseiller de jeter un coup d'œil à la documentation de Microsoft netsh .
Si je me souviens bien, c’était un peu dommage et beaucoup d’appels netsh au besoin, mais cela a fonctionné à la fin ...
Ce qui suit devrait fonctionner
netsh routing ip autodhcp install
netsh routing ip autodhcp set interface name="Local Area Connection(or whereever your internet connection is from)" mode=enable
netsh routing ip autodhcp set global 192.168.0.1 255.255.255.0 11520
Malheureusement, il n'y a pas de telle commande cmd pour Windows 7 ou plus, alors j'ai utilisé cette fonction Visual Basic pour le faire:
Private Function EnableDisableICS(ByVal sPublicConnectionName As String, ByVal sPrivateConnectionName As String, ByVal bEnable As Boolean)
Dim bFound As Boolean
Dim oNetSharingManager, oConnectionCollection, oItem, EveryConnection, objNCProps
oNetSharingManager = CreateObject("HNetCfg.HNetShare.1")
oConnectionCollection = oNetSharingManager.EnumEveryConnection
For Each oItem In oConnectionCollection
EveryConnection = oNetSharingManager.INetSharingConfigurationForINetConnection(oItem)
objNCProps = oNetSharingManager.NetConnectionProps(oItem)
If objNCProps.name = sPrivateConnectionName Then
bFound = True
MsgBox("Starting Internet Sharing For: " & objNCProps.name)
If bEnable Then
EveryConnection.EnableSharing(1)
Else
EveryConnection.DisableSharing()
End If
End If
Next
oConnectionCollection = oNetSharingManager.EnumEveryConnection
For Each oItem In oConnectionCollection
EveryConnection = oNetSharingManager.INetSharingConfigurationForINetConnection(oItem)
objNCProps = oNetSharingManager.NetConnectionProps(oItem)
If objNCProps.name = sPublicConnectionName Then
bFound = True
MsgBox("Internet Sharing Success For: " & objNCProps.name)
If bEnable Then
EveryConnection.EnableSharing(0)
Else
EveryConnection.DisableSharing()
End If
End If
Next
Return Nothing 'bEnable & bFound
End Function
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
EnableDisableICS("YOUR ACTIVE NETWORK", "YOUR ADAPTOR TO SHARE", True)
End Sub
Veuillez noter que "" "" est obligatoire. S'amuser.
D'après ce que j'ai lu, si ceux qui ont posté disent que netsh
ne fonctionne pas à partir de 7 ans et plus, c'est inexact. Maintenant, s’il s’agit strictement de "netsh routing
", je suppose que vous pourriez avoir raison, mais cela fonctionne - je suis sur le point d’afficher le contenu d’un fichier de commandes que j’ai créé et qui fonctionne sous Windows 8.1. Au lieu d’obtenir les commentaires et les informations habituels, je vais essayer d’aider ceux qui disposent des informations complètes.
Tout d'abord, vous devez vous assurer que la connexion que vous allez partager est configurée pour réellement partager la connexion. Ce lien ici devrait vous aider pour cela:
http://windows.Microsoft.com/en-us/windows/set-internet-connection-sharing#1TC=windows-7
Ouvrez Network Connections en cliquant sur le bouton Démarrer Image du bouton Démarrer, puis en cliquant sur Panneau de configuration. Dans la zone de recherche, tapez adaptateur, puis, sous Centre Réseau et partage, cliquez sur Afficher les connexions réseau.
Cliquez avec le bouton droit sur la connexion que vous souhaitez partager, puis cliquez sur Propriétés. Autorisation d'administrateur requise Si vous êtes invité à entrer un mot de passe administrateur ou une confirmation, entrez le mot de passe ou indiquez une confirmation.
Cliquez sur l'onglet Partage, puis cochez la case Autoriser les autres utilisateurs du réseau à se connecter via la connexion Internet de cet ordinateur.
Après avoir suivi les étapes ci-dessus pour configurer ICS sur l'ordinateur hôte, apportez les modifications suivantes sur tous les autres ordinateurs (mais pas sur l'ordinateur hôte).
Ouvrez Options Internet en cliquant sur le bouton Démarrer Image du bouton Démarrer, sur Panneau de configuration, sur Réseau et Internet, puis sur Options Internet.
Cliquez sur l'onglet Connexions, puis sur Ne jamais établir de connexion.
Cliquez sur Paramètres LAN.
Dans la boîte de dialogue Paramètres du réseau local (LAN), sous Configuration automatique, décochez les cases Détecter automatiquement les paramètres et Utiliser le script de configuration automatique.
Sous Serveur proxy, décochez la case Utiliser un serveur proxy pour votre réseau local, puis cliquez sur OK.
À ma connaissance, cela devrait fonctionner pour Windows 7 et 8.
Maintenant que le sujet portait sur une solution de ligne de commande, il s'agit du contenu du fichier de commandes décrivant la procédure d'obtention d'un adaptateur sans fil virtuel configuré et prêt à l'emploi.
Une fois créé, vous devrez peut-être suivre les instructions ci-dessus et vous assurer de partager la connexion source avec le nouvel adaptateur virtuel créé, visible par vos périphériques sans fil.
Fichier .bat de partage de connexion:
@echo off
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%
cd\
if NOT EXIST "C:\TEMP\switch.txt" (
GOTO :START
) ELSE (
GOTO :STOP
)
:START
REM Create Temp File for On and Off switch.
ECHO WOOHOO >"C:\TEMP\switch.txt"
REM -- Output everything that is happening into a file called wifi.txt.
REM -- Start out with a timestamp at the top to show when it was done.
REM -- All 'netsh' commands are for setting up the SSID and starting the sharing.
REM -- I stop and start when starting the service just for prosperity.
echo _%_my_datetime% >"C:\TEMP\wifi.txt"
netsh wlan set hostednetwork mode=allow ssid=ITWORKS key=111222333 >> "C:\TEMP\wifi.txt"
netsh wlan stop hostednetwork >>"C:\TEMP\wifi.txt"
netsh wlan start hostednetwork >>"C:\TEMP\wifi.txt"
echo MSGBOX "Wifi Sharing Started!" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q
GOTO :END
REM -- This will turn ICS off and give a Prompt via VBS that you're turned off.
REM -- I timestamp when the service is turned off in the output file.
REM -- I delete the switch file to let the code know to turn it on when
REM -- when fired off again. Tempmessage is the msgbox used to show the service
REM -- has been turned off. Same for the msgbox above when it's on.
:STOP
echo OFF AT _%_my_datetime% >>"C:\TEMP\wifi.txt"
netsh wlan stop hostednetwork >>"C:\TEMP\wifi.txt"
DEL /Q "C:\TEMP\switch.txt"
echo MSGBOX "Wifi Sharing Stopped!" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q
:END
Je serai plus qu'heureux de répondre à vos questions à ce sujet car il y aura des situations uniques et j'aimerais vous aider car j'ai dû reconstituer ce que j'ai trouvé ci-dessus.
Mais pour mettre cela en perspective, cela fonctionne sous Windows 8.1 en utilisant une connexion Ethernet dans un ordinateur portable partageant sa connexion à l'adaptateur virtuel. Cela peut aussi bien fonctionner si vous essayez de partager une connexion sans fil source.