While getting a new workstation is usually nice, reinstalling all your softwares and settings is definitely not the most pleasant thing that comes to my mind. One of the factors that can contribute the most to making the process even less pleasant is working around the corporate proxy.
Many applications live on the assumption that nobody uses proxy servers, thus making online repositories inaccessible for new installations and for automatic updates.
Unfortunately, PsGallery is no exception.
If you run Get-PSRepository on a vanilla installation of Windows 10 behind a corporate proxy, you will get a warning message:
WARNING: Unable to find module repositories.
After unleashing my Google-Fu, I learned that I had to run the following command to recover the missing PsRepository:
Register-PSRepository -Default -Verbose
The command works without complaining, with just a warning suggesting that something might have gone wrong:
VERBOSE: Performing the operation "Register Module Repository." on target "Module Repository 'PSGallery' () in provider 'PowerShellGet'.".
Again, running Get-PSRepository returns an empty result set and the usual warning:
WARNING: Unable to find module repositories.
The problem here is that the cmdlet Register-PsRepository assumes that you can connect directly to the internet, without using a proxy, so it tries to do so, fails to connect and does not throw a meaningful error messsage. Thank you, Register-PsRepository, much appreciated!
In order to fix it, you need to configure your default proxy settings in your powershell profile. Start powershell and run the following:
notepad $PROFILE
This will start notepad and open your powershell profile. If the file doesn’t exist, Notepad will prompt you to create it.
Add these lines to the profile script:
[system.net.webrequest]::defaultwebproxy = new-object system.net.webproxy('http://YourProxyHostNameGoesHere:ProxyPortGoesHere')
[system.net.webrequest]::defaultwebproxy.credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
[system.net.webrequest]::defaultwebproxy.BypassProxyOnLocal = $true
Save, close and restart powershell (or execute the profile script with iex $PROFILE).
Now, you can register the default PsRepository with this command:
Register-PSRepository -Default
If you query the registered repositories, you will now see the default PsRepository:
Get-PSRepository
Name InstallationPolicy SourceLocation
---- ------------------ --------------
PSGallery Untrusted https://www.powershellgallery.com/api/v2/
Horray!
Archived WordPress comments (33)
Historical comments from the original site; this archive is read-only.
Thank you.
(Get-ItemProperty -Path "Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings").ProxyServer
You could run it on the target machine to see what it gives.
Hope this helps
No thanks to Microsoft for making it so hard (and difficult to troubleshoot).
Yes, I LIVE BEHIND A PROXY!!!!
After "notepad $PROFILE" you have to close all Powershell Editors or windows and start as administrator the powershell editor again!
...don't forget save your ps - scripts before!
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
May also need to to turn off FIPS Cryptography using the Local Policies
Can reenable after registering module
You do not need to restart powershell, instead call . $profile # to reload the profile script