#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