windows 7 – コマンドラインを使用してインターネット接続の共有を有効にするには?

internet-connection powershell windows-7

ネットワーク接続を右クリックして共有タブを開き、「他のネットワークユーザーがこのコンピュータのインターネット接続を介して接続することを許可する」のチェックボックスをクリックすることで、手動で行うことができます

このタスクを自動化する必要があります。これを実現するためのコマンドラインツールやPowershellコマンドレットはありますか?

  37  utapyngo  2012-09-05


ベストアンサー

ここに純粋な 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にもあります

接続先のアダプタのパブリックインタフェースを有効にして、ネットワークで使えるようにしたいアダプタのプライベートインタフェースで共有を有効にする必要があります

23  utapyngo  2013-09-23


そのためのシンプルなコマンドラインツールを作ってみました

  1. ダウンロードして解凍するか、git clone git@github.com:utapyngo/icsmanager.git

  2. build.cmdを実行してビルドします

  3. HNetCfgのCOMライブラリを登録します。regsvr32 hnetcfg.dll (%WINDIR%\System32にある標準ライブラリです)

Command-line usage

  1. 管理者としてコマンドラインプロンプトを開きます

    cdicsmanagerディレクトリ(zipでダウンロードした場合はicsmanager-master)に移動します

  2. Type icsmanager

    これで利用可能なネットワーク接続が表示されるはずです。GUID属性に注目してください。このツールを使用するには、少なくとも2つの接続が必要です

  3. タイプ icsmanager enable {GUID-OF-CONNECTION-TO-SHARE} {GUID-OF-HOME-CONNECTION}

    これでICSが有効になるはずです

Powershell usage

  1. Import module:

    Import-Module IcsManager.dll

  2. ネットワーク接続をリストアップします

    Get-NetworkConnections

  3. インターネット接続の共有を開始します

    Enable-ICS “共有への接続” “ホーム接続”

  4. インターネット接続の共有を停止します

    Disable-ICS


免責事項:私はまだこのツールをテストしていません。あなた自身のリスクでそれを使用してください。何かがうまくいかない場合は、GitHubで気軽に問題を開いてください。プルリクエストも歓迎します

9  utapyngo  2013-09-21


私の理解では、ルーティング機能はVista以降Windowsから削除され、現在はWindows Serverでのみ利用可能となっています

netsh routingを再有効化するための以下のトリックがネット上で紹介されていますので、自己責任で試してみてください。まずはシステムの復元ポイントを作成するなど、通常の注意事項をお勧めします

  1. 2003年またはXPからIPMONTR.DLLとIPPROMON.DLLを入手してください
  2. WINDOWSSYSTEM32にコピーします
  3. 管理者としてコマンドプロンプト(cmd)で実行します

    netsh add helper ipmontr.dll netsh add helper ippromon.dll

また、ルーティングおよびリモートアクセスサービスを自動起動に設定する必要があるかもしれません

何かを試す前に再起動してください

4  harrymc  2013-09-21


残念ながらWindows7以上ではそのような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

“””” が必要ですので、ご注意ください。楽しんでください

2  imad latch  2014-11-27


次のようなものが効くはずです

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

1  Craig  2013-01-01


私が読んだところによると、投稿した人たちが netsh は 7 以降では動作しないと言っているのであれば、それは正しくありません。厳密には「netsh routing」についてならば、その通りだと思いますが、これは動作します-私が作成したWindows 8.1で動作するバッチファイルの内容を紹介します。いつものコメントや情報の断片を得る代わりに、私は完全な情報を持っている人を助けようとしています

まず、共有する接続が実際に接続を共有するように設定されていることを確認する必要があります。このリンクを参考にしてください

ICS (インターネット接続の共有)を使用して、Windows ヘルプで共有インターネット接続を設定します

  1. スタート] ボタンをクリックして [ネットワーク接続] を開き、[コントロールパネル] をクリックします。検索ボックスに「アダプタ」と入力し、「ネットワークと共有センター」の下の「ネットワーク接続の表示」をクリックします

  2. 共有する接続を右クリックし、[プロパティ] をクリックします。管理者パスワードまたは確認のプロンプトが表示されたら、パスワードを入力するか、確認を行います

  3. 共有] タブをクリックし、[このコンピュータのインターネット接続を介して接続する他のネットワークユーザーを許可する] チェックボックスを選択します

上記の手順でホストコンピュータに ICS をセットアップしたら、他のすべてのコンピュータで以下の変更を行ってください(ホストコンピュータではありません)

  1. スタートボタンをクリックして、コントロールパネルをクリックし、ネットワークとインターネットをクリックして、インターネットオプションを開きます

  2. 接続] タブをクリックし、[接続をダイヤルしない] をクリックします

  3. LAN設定をクリックします

  4. ローカルエリアネットワーク(LAN)の設定]ダイアログボックスの[自動設定]で、[設定を自動的に検出する]と[自動設定スクリプトを使用する]のチェックボックスをオフにします

  5. プロキシサーバー]の[LANにプロキシサーバーを使用する]のチェックボックスをオフにして、[OK]をクリックします

同様の説明書はこちら.にもあります

私の知る限りでは、これはWindows7と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上で動作します。あなたがソースのワイヤレス接続を共有しようとしている場合、それは同様に動作することがあります

1  user2562950  2015-08-02


タイトルとURLをコピーしました