I'm trying to enable and disable the automatically detect settings and automatic configuration script for LAN settings in Internet Explorer(IE). The script is working fine on windows 7 32,64 bit, Windows 10 32,64 bit but on windows 8 64bit it's throwing error specified cast is not valid when disabling the automatically detect settings and enabling/disabling automatic configuration script for LAN settings.

[string]$ProxyRegRoot = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings'
#this setting is affected by multiple options, so fetch once here 
[string]$DefaultConnectionSettingsPath = (Join-Path $ProxyRegRoot 'Connections')
[byte[]]$DefaultConnectionSettings = Get-ItemProperty -Path $DefaultConnectionSettingsPath -Name 'DefaultConnectionSettings' | Select-Object -ExpandProperty 'DefaultConnectionSettings'
[byte]$MaskProxyEnabled = 2
[byte]$MaskUseAutomaticConfigurationScript = 4
[byte]$MaskAutomaticDetect = 8
[int]$ProxyConnectionSettingIndex = 8

#Auto-ConfigScript for LAN Settings
function Auto-ConfigScript {
    #region config script
    $UseAutomaticConfigurationScriptInput = Read-Host "Enable Automatic Configuration Script  [y]Yes   [n]No"
    if ($UseAutomaticConfigurationScriptInput -eq "yes" -or $UseAutomaticConfigurationScriptInput -eq "y") {
        $UseAutomaticConfigurationScript = $true
        $UseAutomaticConfigurationScriptAddress = Read-Host "Enter Address "
        Set-ItemProperty -Path $ProxyRegRoot -Name AutoConfigURL -Value $UseAutomaticConfigurationScriptAddress

        $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConnectionSettings[$ProxyConnectionSettingIndex] -bor $MaskUseAutomaticConfigurationScript
    }
    else {
        $UseAutomaticConfigurationScript = $false
        $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConnectionSettings[$ProxyConnectionSettingIndex] -band (-bnot $MaskUseAutomaticConfigurationScript) 
    }
    #endregion

    #persist the updates made above
    Set-ItemProperty -Path $DefaultConnectionSettingsPath -Name 'DefaultConnectionSettings' -Value $DefaultConnectionSettings
}

function Auto-DetectSettings {
    #region auto detect
    $AutomaticDetect = Read-Host "Enable Automatically detect settings [y]Yes   [n]No"
    if ($AutomaticDetect -eq $true -or $AutomaticDetect -eq "yes" -or $AutomaticDetect -eq "y") { 
        Set-ItemProperty -Path $ProxyRegRoot -Name AutoDetect -Value 1
        $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConnectionSettings[$ProxyConnectionSettingIndex] -bor $MaskAutomaticDetect
    }
    else {
        Set-ItemProperty -Path $ProxyRegRoot -Name AutoDetect -Value 0
        $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConnectionSettings[$ProxyConnectionSettingIndex] -band (-bnot $MaskAutomaticDetect)
    }
    #endregion

    #persist the updates made above
    Set-ItemProperty -Path $DefaultConnectionSettingsPath -Name 'DefaultConnectionSettings' -Value $DefaultConnectionSettings

}


Error Traceback

Specified cast is not valid.
At C:\Users\afs.prithvi\Downloads\Internet Properties Win7 32-64 bit working.ps1:23 char:9
+         $DefaultConnectionSettings[$ProxyConnectionSettingIndex] = $DefaultConne ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], InvalidCastException
    + FullyQualifiedErrorId : System.InvalidCastException

Update error is occuring at line number 23

0

There are 0 best solutions below