简体   繁体   中英

unable to connect azure automation and exchange online

I'm receiving this error when attempting to connect to Exchange online when using a service account from my automation account. I think the problem may also be that my $credential variable is not passing into my $session variable, but I can't think of any reason why that would be happening.


Error:

New-PSSession: [outlook.office365.com] Connecting to remote server outlook.office365.com failed with the following error message: Access is denied. For more information, see the about_Remote_Troubleshooting Help topic. At line:5 char:12

  • $session = New-PSSession -ConfigurationName Microsoft.Exchange -Conne...
  •  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • CategoryInfo: OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException
    • FullyQualifiedErrorId: AccessDenied,PSSessionOpenFailed Import-PSSession: Cannot validate argument on parameter 'Session'. The argument is null. Provide a valid value for the argument, and then try running the command again. At line:6 char:42
  • Import-Module (Import-PSSession -Session $session -DisableNameCheckin...
  •  ~~~~~~~~

Script:

Param ( [string] $Employee = "" ) $credential = Get-AutomationPSCredential -Name 'admin@crafthub.onmicrosoft.com' $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'https://outlook.office365.com/powershell-liveid/' -Credential $credential -Authentication Basic -AllowRedirection Import-Module (Import-PSSession -Session $session -DisableNameChecking -AllowClobber) -Global $mailbox = Get-Mailbox -Identity $Employee Write-Output $mailbox


Help will be highly appreciated

Yes, it looks like $credential variable is not passing into $session variable.

In your code you have given Azure Automation credential name as "admin@crafthub.onmicrosoft.com" so double check if you have created Azure Automation credential with the exact name "admin@crafthub.onmicrosoft.com" or not.

You may already be aware but just letting you know that you have to provide Office 365 service account's credentials when you create an Azure Automation credential. To create Azure Automation credential, goto Azure Portal -> Your Azure Automation Account -> 'Credentials' tile -> Click on '+ Add a credential' -> Provide a name for Azure Automation credential under 'Name', provide Office 365 service account's name under 'User name', provide Office 365 service account's password under 'Password' and 'Confirm password' -> Click on 'Create'.

Then, provide the name of that Azure Automation credential in your code's Get-AutomationPSCredential command line ie, $credential = Get-AutomationPSCredential -Name '<Above_Provided_Azure_Automation_Credential_Name>'

If you have already done all this without any issues then I would recommend you to try latest "Exchange Online PowerShell V2" way ie, import "ExchangeOnlineManagement" Azure Automation module as shown below and then to connect, use Connect-ExchangeOnline cmdlet instead of New-PSSession cmdlet. Later, as you are trying to get mailbox details so use Get-EXOMailbox cmdlet instead of Get-Mailbox cmdlet. For more information w.r.t it, refer this document.

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM