The best thing to do here is switch to using certificate-based auth as detailed in this article: https://learn.microsoft.com/en-us/powershell/exchange/app-only-auth-powershell-v2?view=exchange-ps
Connecting to Exchange Online using PowerShell in VB.NET - changes since Basic Authentication retired
Hi
Previously used code such as below to connect and query Exchange Online - since basic authentication retirement this now can't be used - can someone please give me some pointers on how I can modify this to work with the new modern authentication requirements?
Thank you
Dim connectionUri As String = "https://outlook.office365.com/powershell-liveid/"
Dim credential As New PSCredential(Username_String, Password_SecureString)
Dim connectionInfo As New WSManConnectionInfo(New Uri(connectionUri), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credential)
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic
connectionInfo.MaximumConnectionRedirectionCount = 2
Dim results As Collection(Of PSObject)
Try
Using runspace As Runspace = RunspaceFactory.CreateRunspace(connectionInfo)
Using powershell As PowerShell = PowerShell.Create()
runspace.Open()
powershell.Runspace = runspace
powershell.AddCommand("Get-Mailbox").AddParameter("Identity", MailboxIdentityToCheck)
results = powershell.Invoke()
End Using
End Using
Catch ex As Remoting.PSRemotingTransportException
Append_tb(TextBox1, "Credentials stored are invalid" & vbCrLf & vbCrLf & "Click Change Credentials, enter correct credentials and then click Test Connection again")
Exit Sub
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
3 answers
Sort by: Most helpful
-
-
Darren Rose 281 Reputation points
2022-10-20T19:38:36.747+00:00 Found useful C# sample here which I converted to VB and got working both to connect using method suggested by michev and to connect by supplying username and password - so have two methods now working using modern authentication and my app is up and running again.
-
KyleXu-MSFT 26,271 Reputation points
2022-10-21T01:58:14.157+00:00 Before that you could follow this blog to enable basic for remote PowerShell temporarily (not sure whether it could work for VB):
Due to connect to Exchange online with VB related to the development, I will help you add the “office-exchange-server-dev” tag to this thread.
If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.