jagreygoose icon

Hotspot Windows 10

jagreygoose | PRO | 12/04/17 10:41:51 PM UTC | 0 ⭐ | 234 👁️ | Never ⏰ | []
PowerShell |

3.1 KB

|

None

|

0 👍

/

0 👎

#region Start WLANAutoConfig Service
$WLANAutoConfig = Get-Service -Name "WlanSvc"
if ($WLANAutoConfig.Status -ne 'Running')
{
    Write-Verbose "Starting WlanSvc"
    Start-Service -Name "WlanSvc"
    $WLANAutoConfig.WaitForStatus('Running','00:00:05')
}
#endregion Start WLANAutoConfig Service
 
 
#region Remove existing hostednetwork configuration
$HostedNetworkSettings = "HKLM:\SYSTEM\CurrentControlSet\Services\WlanSvc\Parameters\HostedNetworkSettings"
If ((Test-Path $HostedNetworkSettings) -eq $true)
{
    Write-Verbose "Removing Hosted Network"
    netsh wlan stop hostednetwork | out-null
    netsh wlan set hostednetwork mode=disallow | out-null
    Remove-Item "HKLM:\SYSTEM\CurrentControlSet\Services\WlanSvc\Parameters\HostedNetworkSettings" -Force
}
#endregion Remove Existing Hosted Network Configuration
 
#region Set & Start Hotspot
netsh wlan set hostednetwork mode=allow ssid=Hotspot key=H0tspot1 | out-null
netsh wlan start hostednetwork | out-null
#endregion Set & Start Hotspot
 
#region Internet Connection Sharing
# The Adapter you use to connect to the internet
$PublicAdapterName = (Get-NetAdapter | Where-Object {$_.MediaConnectionState -eq 'Connected' -and $_.PhysicalMediaType -ne 'Unspecified'} | Sort-Object LinkSpeed | select -First 1).name
# Your Hotspot
$PrivateAdapterName = (Get-NetAdapter | Where-Object {$_.Virtual -eq $true -and $_.MediaConnectionState -eq 'Connected' -and $_.InterfaceDescription -eq "Microsoft Hosted Network Virtual Adapter"} | select -First 1).name
 
function InternetConnectionSharing
{
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        $sPublicConnectionName,
        [Parameter(Mandatory = $true)]
        $ssPrivateConnectionName,
        [Parameter(Mandatory=$false)]
        [Switch]$bEnable
    )
    
    process
    {
        try
        {
            $oNetSharingManager = New-Object -ComObject HNetCfg.HNetShare
        }
        catch
        {
            regsvr32 /s hnetcfg.dll
            $oNetSharingManager = New-Object -ComObject HNetCfg.HNetShare
        }
        $oConnectionCollection = $oNetSharingManager.EnumEveryConnection
        ForEach ($oItem in $oConnectionCollection)
        {
            $EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)
            $objNCProps = $oNetSharingManager.NetConnectionProps($oItem)
            if ($objNCProps.name -eq $ssPrivateConnectionName)
            {
                
                if ($bEnable)
                {
                    $EveryConnection.EnableSharing(1)
                }
                else
                {
                    $EveryConnection.DisableSharing()
                }
            }
        }
        $oConnectionCollection = $oNetSharingManager.EnumEveryConnection
        ForEach ($oItem in $oConnectionCollection)
        {
            $EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)
            $objNCProps = $oNetSharingManager.NetConnectionProps($oItem)
            if ($objNCProps.name -eq $sPublicConnectionName)
            {
                
                if ($bEnable)
                {
                   
                    $EveryConnection.EnableSharing(0)
                }
                else
                {
                    $EveryConnection.DisableSharing()
                }
            }
        }
    }
    
}
InternetConnectionSharing -sPublicConnectionName $PublicAdapterName -ssPrivateConnectionName $PrivateAdapterName -bEnable
#endregion Internet Connection Sharing

Comments