Intro
I’ve used Windows PowerShell for all of a few hours so far. But, still, I think I have something to contribute to the community. The documentation on how to send commands through a standard http proxy is pretty miserable so I’d like to make that more clear. I plan to use PowerShell to administer Exchange online.
The details
Microsoft has some pretty good documentation on PowerShell in general. in particular for my desire to connect to Exchange Online I found this very helpful article. But that article says not a whit about sending your connection through an explicit proxy, which I found bewildering.
But I found some key documentation pages on a few related commands (TBD) which I eventually realized could be chained together to achieve what I wanted.
First I set up a credentials object:
$credential = Get-Credential |
This pops up an authentication window so be prepared with your Microsoft administrator credentials.
Next I make sure Internet Explorer has the correct proxy settings. Then I inherit them from IE like this:
$drj = New-PSSessionOption -ProxyAccessType IEConfig |
I refer to this options object in the next command:
$exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $credential -Authentication "Basic" -AllowRedirection -SessionOption $drj |
One more command to get things going:
Import-PSSession $exchangeSession |
and I’m ready to issue real get/set commands!
Conclusion
Hopefully this posting helps to clear up what to do to make certain commands in PowerShell work through a standard http proxy. PowerShell, for a guy who’s only done BASH scripts, is actually pretty cool.
References
The basic idea of connecting to Exchange Online is contained here in this helpful Microsoft article, but you will find no mention of proxy whatsoever on that page. That part I figured out.
One reply on “PowerShell and Proxy server”
This was so helpful! I was struggling with this issue for days, but this solved it. Thank you!