2
votes

Erreur New-ExoPSSession lors de l'utilisation de la commande Connect-ExchangeOnline dans PowerShell

J'essaie de me connecter à PowerShell à l'aide de la commande Connect-ExchangeOnline mais je reçois l'erreur suivante. Des idées?

New-ExoPSSession : . 
At C:\Program Files\WindowsPowerShell\Modules\ExchangeOnlineManagement\1.0.1\ExchangeOnlineManagement.psm1:445 char:30
+ ... PSSession = New-ExoPSSession -ExchangeEnvironmentName $ExchangeEnviro ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-ExoPSSession], Exception
    + FullyQualifiedErrorId : System.Exception,Microsoft.Exchange.Management.ExoPowershellSnapin.NewExoPSSession


7 commentaires

Veuillez montrer le format des informations d'identification que vous entrez. En règle générale, le nom d'utilisateur des informations d'identification est la valeur UserPrincipalName de ce compte. Seul userid ne fonctionnera pas. Le SamAccountName ne fonctionnera généralement pas car s'il s'agit d'un compte AD local, la valeur SamAccountName ne correspond pas à ce qui se trouve dans Azure. En ce qui concerne les comptes cloud, le SamAccountName n'est souvent pas ce que vous attendez. UserPrincipalName (UPN) est prévisible et doit être cohérent d'un site local à Azure (s'il est en mode hybride) ou s'il est créé dans le cloud. Le format UPN ressemble à une adresse e-mail.


La connexion à ExchangeOnline à l'aide d'un nom d'utilisateur au format domain\userid peut créer cette erreur.


@AdminOfThings oui J'utilise le format domain / userid. Je devrais donc utiliser mon e-mail d'entreprise, c'est ce que vous dites ??


Créer plusieurs questions pour le même problème n'aide en rien. En général, l'aide est fournie très rapidement. Croyez-moi quand je dis que vos questions ne se perdent pas dans la pile. S'ils restent sans réponse, ils sont soit trop complexes pour une réponse rapide, soit vous ne fournissez pas suffisamment d'informations. C'est la situation où vous ne fournissez pas suffisamment d'informations.


généralement, le format de l'e-mail correspond à l'UPN. Je commencerais par une adresse e-mail si vous n'êtes pas sûr de la valeur UPN.


@AdminOfThings J'apprécie toute votre aide et j'ajouterai autant d'informations que possible à mes prochaines questions


Je ne suis pas habilité à poser des questions, mais je peux modifier une question et ajouter plus d'informations ou fournir des informations mises à jour en fonction des étapes que vous avez essayées. L'évolution des données de la question est parfois nécessaire pour trouver une solution. Ce que les gens n'aiment généralement pas, c'est attendre plus que la question ne l'exige. Vous ne voulez pas non plus inonder le message avec trop d'informations inutiles. Il y a un équilibre et des commentaires aident à positionner le focus.


3 Réponses :


2
votes

Essayez d'utiliser l'applet de commande comme suit:

Connect-IPPSSession -PSSessionOption
$EXOSession = New-ExoPSSession -pssessionoption
Import-PSSession $EXOSession -Prefix EXO


2 commentaires

S'agit-il de trois commandes distinctes ou d'une seule commande sur trois lignes? Quelle que soit la façon dont je les essaie, j'obtiens des erreurs.


Ces commandes doivent être essayées une par une. Donc trois commandes ensemble



1
votes

Voici un script que j'utilise pour me connecter. Veuillez remplir votre nom d'utilisateur par défaut et assurez-vous d'exécuter les prérequis dans les commentaires en haut (vérifiez d'abord bien sûr)

Et si vous utilisez ce non-interactif, vous voudrez rechercher comment stocker vos informations d'identification en toute sécurité et comment utiliser ces informations d'identification stockées, en remplaçant la section Get-Credential par votre configuration

# Requires: .Net 4.5, Windows Management Framework 5.1 (see https://docs.microsoft.com/en-us/powershell/exchange/exchange-online/connect-to-exchange-online-powershell/connect-to-exchange-online-powershell?view=exchange-ps )
#
# Run Once:
#  Set-ExecutionPolicy RemoteSigned; Get-ExecutionPolicy
#  Install-Module PowerShellGet -Force
#  Install-Module –Name ExchangeOnlineManagement
#
# https://docs.microsoft.com/en-us/powershell/exchange/exchange-online/exchange-online-powershell-v2/exchange-online-powershell-v2?view=exchange-ps



$exo = New-Module -AsCustomObject -ScriptBlock {
    $UserName = "Default.Username@domain"
    $UserCredential = Get-Credential -message "Enter 365 admin credentials" -UserName $UserName
    function IsConnected(){
        try{
            if (
                @($(get-mailbox -resultsize 1 -WarningAction silentlycontinue)).count `
                -eq
                1
            ) {return $true}
        }
        catch {}
        return $false
    }

    function Connect(){
        $result = "Unfinished"
        if ($this.IsConnected()) {
            $result = "Success"
        } else {
            $UserCredential = $this.UserCredential
            Connect-ExchangeOnline -Credential $UserCredential
            if ($this.IsConnected()) {
                $result = "Success"
            } else {
                $result = "Fail"
            }
        }
        switch($result){
            "Unfinished" {Write-Warning "`nAn unknown error occured in .Connect(), Appears to have ended while unfinished";break}
            "Success" {Write-host "`nSuccessfully connected to Exchange 365";break}
            "Fail" {Write-Warning "`nFailed to connect to Exchange 365";break}
            default {write-warning "`nAn unknown error occured in .Connect(), result code unrecognized";break}
        }
        # old style
        #$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
        #Import-PSSession $Session -DisableNameChecking -AllowClobber
    }

    function Disconnect(){
        Disconnect-ExchangeOnline
        # old sytle
        #Remove-PSSession $Session
    }

    function Cycle(){
        $this.Disconnect()
        $this.Connect()
    }
    Export-ModuleMember -Function * -Variable *
}

$exo.Connect()

<#
# --- Azure AD ---
# https://docs.microsoft.com/en-us/office365/enterprise/powershell/connect-to-office-365-powershell#connect-with-the-azure-active-directory-powershell-for-graph-module
# --- Azure AD ---
#>


9 commentaires

J'espère que c'est clair dans le script, mais cela crée un objet $ exo avec lequel vous pouvez appeler $exo.Connect() , $exo.Disconnect() , $exo.Cycle() et $exo.IsConnected()


C'est si douloureux. Tout ce que j'essaie de faire, c'est d'afficher une boîte aux lettres qui est cachée dans la console de gestion Exchange parce que j'ai supprimé la licence de l'utilisateur. Il s'avère que vous devez utiliser Power Shell pour faire cela (pourquoi?) Et ensuite vous devez écrire un script pour le faire? Pourraient-ils rendre des tâches simples plus compliquées?


Le script a échoué avec: Exception appelant "Connect" avec des arguments "0": La création d'une session Powershell a échoué avec Oauth à logon.ps1: 64: 1 Exo.Connnect ()


Avez-vous fait pour exécuter les 3 lignes "run once" et vous êtes-vous assuré d'avoir à la fois Powershell 5 (ou supérieur) et .Net 4.5? Si tel est le cas, un autre utilisateur a eu un problème similaire et a dû désinstaller puis réinstaller le module PowerShell d' échange en ligne


Le script consiste à stocker les informations d'identification et à simplifier les connexions supplémentaires. Il vous déconnecte très rapidement maintenant, donc j'ai trouvé pratique d'avoir un moyen simple de se reconnecter. Il simplifie à $UserCredential = Get-Credential; Connect-ExchangeOnline -Credential $UserCredential


Oui, j'ai exécuté les trois commandes Exécuter une fois. Je ne sais pas comment vérifier la version de PowerShell ou .Net. Je ne sais même pas ce qu'est .Net et je ne le vois pas dans la liste des programmes sous Windows.


Continuons cette discussion en chat .


Après avoir travaillé un peu dessus, il semble qu'il puisse y avoir un conflit causé par certains des paramètres de Microsoft Intune


La suppression de la ligne de base de sécurité d'Intune et la resynchronisation en redémarrant ont résolu le problème.



1
votes

La suppression de la ligne de base de sécurité d'Intune et la resynchronisation en redémarrant a résolu le problème dans mon cas.


0 commentaires