J'essaie d'établir une session PowerShell pour exécuter plusieurs commandes Exchange sur un serveur Exchange sur l'hôte local. Je reçois toujours l'erreur suivante:
New-PSSession : [<HOSTNAME>] Connecting to remote server <HOSTNAME> failed with the following error message
: Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:12
+ $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'h ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotin
gTransportException
+ FullyQualifiedErrorId : AccessDenied,PSSessionOpenFailed
Mon code est un copier-coller de Microsoft article Technet . Cela fonctionne contre la machine distante, mais chaque fois que je cible la machine sur laquelle je cours, j'obtiens l'erreur ci-dessus.
Ce que j'ai essayé jusqu'à présent:
about_remote_troubleshooting
rubrique d'aide. Rien dans ce document concernant les erreurs d'accès refusé n'a fonctionné.Net Use
et net session
pour m'assurer que je n'avais pas de connexions multiples étranges avec le même problème d'informations d'identification. (Je n'ai rien vu pour indiquer cela)Quelques notes rapides:
Les commandes spécifiques que j'entre sont:
$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred
La connexion à l'hôte local comme celle-ci est-elle quelque chose que je devrais pouvoir faire? Ou n'est-il simplement pas pris en charge?
Je suis complètement perdu à ce stade. Toute aide, même pour me diriger dans la bonne direction, serait grandement appréciée.
EDIT: Je devrais ajouter, j'ai essayé de me connecter à cet hôte local à partir d'une autre machine, en utilisant les mêmes commandes que ci-dessus, et cela a fonctionné sans problème. Donc, je ne pense pas qu'il s'agit d'un problème de configuration local.
Donc, je suis tombé sur la solution à la fin de la semaine dernière. Cela semble avoir quelque chose à voir avec l'authentification utilisée. J'avais laissé le paramètre "-Authentication" vide, dans l'intention de laisser la commande New-PSSession trier la méthode qui serait la meilleure.
Apparemment, cela revient par défaut à la méthode d'authentification "Négocier", qui sélectionnera Kerberos sur une machine distante, mais sélectionnera NTLM dans le cas contraire (ou du moins, c'était mon comportement observé/supposé). Voir cette description Microsoft des méthodes d'authentification.
La spécification d'une méthode d'authentification spécifique ("Kerberos" et "Basic" ont fonctionné, "Negotiate" n'a pas fonctionné, je n'ai pas trop bricolé) résout le problème et m'a permis de me connecter à l'instance d'échange locale.
Donc, plutôt que cela:
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred
Faites ceci:
$session = New-PSSession -Authentication Kerberos -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred
Pourquoi cela a-t-il fonctionné? Je n'ai aucune idée. Je laisse le soin aux personnes qui en savent plus que moi de l'expliquer.
Si vous essayez simplement de créer une session sur le même ordinateur que votre session actuelle, omettez l'URI.
$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange -Credential $cred
Cela créera une nouvelle session sur l'hôte local à laquelle vous pourrez vous connecter et utiliser selon vos besoins.