MSLab icon indicating copy to clipboard operation
MSLab copied to clipboard

Suggestion - Add proxy support

Open Mrkuff opened this issue 3 years ago • 4 comments

I was behind a proxy here and I had to change the script to add "-Proxy $Proxy -ProxyCredential $MyCreds" at the end of each "Invoke-WebRequest" cmdlet.

Same thing for "Install-PackageProvider -Name NuGet"

But then, i got error with "Find-DscResource -moduleName $modulename -RequiredVersion $moduleversion | Save-Module -Path "$PSScriptRoot\Temp\DSC"

I've search a long time and try these configuration without success :

Setting TLS 1.2 : [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Bypassing the certificate validation : [Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}; Bypassing the certificate validation by code instead of block : #C# class to create callback $code = @" public class SSLHandler { public static System.Net.Security.RemoteCertificateValidationCallback GetSSLHandler() {

    return new System.Net.Security.RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return true; });
}

} "@ #compile the class Add-Type -TypeDefinition $code

#disable checks using new class [System.Net.ServicePointManager]::ServerCertificateValidationCallback = [SSLHandler]::GetSSLHandler()

No success!! but then i've found way to configure default proxy but i wasnt able to add it to the script, and I had to install the module outside of the "Prereq" script. here what I use for this to work :

$proxy = 'YER PROXY HERE' # update this [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 [system.net.webrequest]::defaultwebproxy = new-object system.net.webproxy($proxy) [system.net.webrequest]::defaultwebproxy.credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials [system.net.webrequest]::defaultwebproxy.BypassProxyOnLocal = $true

Install-PackageProvider -Name nuget -Scope AllUsers -Confirm:$false -Force -MinimumVersion 2.8.5.201 Register-PSRepository -Default -verbose

Install-Module -Name xActiveDirectory -Scope AllUsers -Confirm:$false -Force Install-Module -Name xDHCpServer -Scope AllUsers -Confirm:$false -Force Install-Module -Name xDNSServer -Scope AllUsers -Confirm:$false -Force Install-Module -Name NetworkingDSC -Scope AllUsers -Confirm:$false -Force Install-Module -Name xPSDesiredStateConfiguration -Scope AllUsers -Confirm:$false -Force

Probably there more "code head" people who can help with this since it's ugly but working :)

Thanks again for the great script!

Mrkuff avatar Feb 15 '22 01:02 Mrkuff

Oh and .. I've just saw this message for the telemetry :D

Unnecessary files cleanup Do you want to cleanup unnecessary files and folders? [Y] Yes [N] No [?] Help (default is "Y"): y Cleaning unnecessary items Removing D:\WSLab\Temp Removing D:\WSLab\1_Prereq.ps1 Removing D:\WSLab\2_CreateParentDisks.ps1 Renaming D:\WSLab\3_Deploy.ps1 to Deploy.ps1 Sending telemetry info Sending telemetry failed with an error: The remote server returned an error: (407) Proxy Authentication Required. Transcript stopped, output file is D:\WSLab\CreateParentDisks.log Job Done. Press enter to continue...

Mrkuff avatar Feb 15 '22 01:02 Mrkuff

adding @machv :)

jaromirk avatar Feb 15 '22 08:02 jaromirk

I've rerun the script completely cos i had to change the DC domain name.. and i've just change this from the 1_Prereq.ps1 and it's working now with my proxy :

#set TLS 1.2 for github downloads [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

#set TLS 1.2 and Proxy for github downloads $proxy = 'YER PROXY HERE' # update this [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 [system.net.webrequest]::defaultwebproxy = new-object system.net.webproxy($proxy) [system.net.webrequest]::defaultwebproxy.credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials [system.net.webrequest]::defaultwebproxy.BypassProxyOnLocal = $true Register-PSRepository -Default

Mrkuff avatar Feb 15 '22 15:02 Mrkuff

Ok it's the last version of it (without any error message ) :

#set TLS 1.2 and Default Web Proxy for github downloads $proxy = 'YER PROXY HERE' # update this [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 [system.net.webrequest]::defaultwebproxy = new-object system.net.webproxy($proxy) [system.net.webrequest]::defaultwebproxy.credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials [system.net.webrequest]::defaultwebproxy.BypassProxyOnLocal = $true

Mrkuff avatar Feb 15 '22 15:02 Mrkuff