ネットワーク接続を右クリックして[共有]タブを開き、[他のネットワークユーザーがこのコンピュータのインターネット接続を介して接続することを許可する]チェックボックスをクリックすることで、手動で行うことができます。
このタスクを自動化する必要があります。これを行うためのコマンドラインツールまたはPowershellコマンドレットはありますか?
これは純粋なPowerShellソリューションです(管理者権限で実行する必要があります):
# 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()
social.msdn.Microsoft.com でこの質問も参照してください:
接続先のアダプターでパブリックインターフェイスを有効にし、ネットワークで使用できるようにするアダプターのプライベートインターフェイスで共有を有効にする必要があります。
シンプルなコマンドラインツール を作成しました。
ダウンロード および解凍またはgit clone [email protected]:utapyngo/icsmanager.git
build.cmd
を実行してビルド
HNetCfg
COMライブラリを登録します:regsvr32 hnetcfg.dll
(これは%WINDIR%\System32
にある標準ライブラリです)
管理者としてコマンドラインプロンプトを開く
cd
をicsmanager
ディレクトリ(またはZipをダウンロードした場合はicsmanager-master
)に移動します。
icsmanager
と入力します
利用可能なネットワーク接続が表示されます。 GUID属性に注意してください。このツールを使用するには、少なくとも2つの接続が必要です。
タイプicsmanager enable {GUID-OF-CONNECTION-TO-SHARE} {GUID-OF-HOME-CONNECTION}
これでICSが有効になります。
インポートモジュール:
Import-Module IcsManager.dll
ネットワーク接続を一覧表示します。
Get-NetworkConnections
インターネット接続の共有を開始します。
Enable-ICS「共有する接続」「ホーム接続」
インターネット接続の共有を停止します。
ICSを無効にする
免責事項:私はまだツールをテストしていません。自己責任で使用してください。何かが機能しない場合は、GitHubで問題を開いてください。プルリクエストも歓迎します。
私の理解では、ルーティング機能はVistaからWindowsから削除され、現在Windows Serverでのみ利用可能です。
次のトリックは、インターネットでnetsh routing
、ご自身の責任でお試しいただけます。まず、システムの復元ポイントの作成など、通常の予防策を提案します。
管理者としてコマンドプロンプト(cmd)で実行します。
netsh add helper ipmontr.dll
netsh add helper ippromon.dll
また、ルーティングとリモートアクセスサービスを自動起動に設定する必要がある場合もあります。
何かを試す前に再起動してください。
私の以前の同僚は、Windows独自のツールnetshを介してこれを行っていました。私はこれを自分でやったことがないので、Microsoft netshのドキュメント を参照することをお勧めします。
私が覚えているように、それはそれをする必要がある場所ではかなり貧弱で多くのnetsh呼び出しでしたが、最終的にはうまくいきました...
残念ながら、Windows 7以降にはそのようなcmdコマンドがないため、このVisual Basic関数を使用して実行しました。
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
「」「」は必須です。楽しんで。
以下はうまくいくはずです
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
私が読んだことによると、投稿した人がnetsh
が7以降で機能しない場合、それは誤りです。厳密に言えば「netsh routing
"、私はあなたが正しいと思うかもしれませんが、これはうまくいきます-私はWindows 8.1で動作する私が作成したバッチファイルの内容を表示しようとしています。通常のコメントや情報を取得する代わりに、完全な情報でそれらを助けようとする。
まず、共有する接続が実際に接続を共有するように設定されていることを確認する必要があります。このリンクをクリックすると、そのための準備が整います。
WindowsヘルプでICS(インターネット接続の共有) を使用して共有インターネット接続をセットアップします。
スタートボタンをクリックし、次にコントロールパネルをクリックしてネットワーク接続を開きます。検索ボックスに「adapter」と入力し、[ネットワークと共有センター]で[ネットワーク接続を表示。
共有する接続を右クリックし、[プロパティ]をクリックします。管理者のパスワードまたは確認を求められた場合は、パスワードを入力するか、確認を提供します。
共有タブをクリックし、他のネットワークユーザーがこのコンピューターのインターネット接続を介して接続することを許可するチェックボックス。
上記の手順に従ってホストコンピュータでICSをセットアップした後、他のすべてのコンピュータ(ホストコンピュータではない)で次の変更を行います。
スタートボタンをクリックし、コントロールパネルをクリックしてインターネットオプションを開き、 ネットワークとインターネット、次にインターネットオプションをクリックします。
接続タブをクリックし、次に接続をクリックしないでください。
LAN設定をクリックします。
ローカルエリアネットワーク(LAN)の設定ダイアログボックスの自動構成、自動検出設定および自動構成スクリプトを使用チェックボックスをオフにします。
Proxy serverで、Use a proxy server for your LANチェックをオフにしますボックスをクリックし、[〜#〜] ok [〜#〜]をクリックします。
同様の手順も利用できます ここ 。
私の知る限り、これはWindows 7と8の両方で機能するはずです。
ここでのトピックはコマンドラインソリューションに関するものだったので、これは仮想ワイヤレスアダプターを構成して準備する方法のバッチファイルの内容です。
それが作成されたら、上記の手順を使用して、ワイヤレスデバイスによって表示される新しく作成された仮想アダプタとソース接続を共有していることを確認する必要がある場合があります。
接続共有.batファイル:
@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
いくつかのユニークな状況があり、上で見つけたものをつなぎ合わせなければならなかったので助けたいので、私はこれについての質問に答える以上に幸せです。
しかし、これを全体像として見ると、これはWindows 8.1で動作し、仮想アダプターへの接続を共有するラップトップへのイーサネット接続を使用します。ソースのワイヤレス接続を共有しようとしている場合も同様に機能します。