2017-05-24 3 views
0

J'écris un code pour l'accès à distance pour l'échange PowerShell de l'application asp.net pour permettre le courrier distant en utilisant vb.net et échangez 2016 la commande lancée avec succès à partir de mon déboguage Visual Studio mais quand je mets en iis serveur web, il me donneAppel distant PowerShell. L'accès est refusé à partir du serveur web

Connexion au serveur distant "" a échoué avec l'erreur suivante message: l'accès est refusé

c'est est le code

Function enableRemoteEmail(ByVal samaccount As String, ByVal email As String) As String 
    Dim ServerUri As String = "http://{mailserver}/powershell" 
    Dim SchemaUri As String = "http://schemas.microsoft.com/powershell/Microsoft.Exchange" 
    Dim userName As String = AccountOperatorLogon 
    Dim password As New System.Security.SecureString 
    For Each x As Char In AccountOperatorPassword 
     password.AppendChar(x) 
    Next 

    Dim PSCredential As New PSCredential(userName, password) 
    Dim ConnectionInfo As WSManConnectionInfo = New WSManConnectionInfo(New Uri(ServerUri), SchemaUri, PSCredential) 
    ConnectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic 
    Dim RemoteRunspace As Runspace = RunspaceFactory.CreateRunspace(ConnectionInfo) 
    Dim RemotePowerShell As PowerShell = PowerShell.Create 
    RemotePowerShell.AddCommand("Enable-RemoteMailbox") 
    RemotePowerShell.AddParameter("Identity", samaccount) 
    RemotePowerShell.AddParameter("RemoteRoutingAddress",email) 
    RemotePowerShell.AddParameter("Credential", PSCredential) 

    ' Open the remote runspace on the server. 
    RemoteRunspace.Open() 
    ' Associate the runspace with the Exchange Management Shell. 
    RemotePowerShell.Runspace = RemoteRunspace 
    Dim TheResult As Collection(Of PSObject) 
    Dim TheResultString As String = "" 
    TheResult = RemotePowerShell.Invoke 
    For Each RSLT As PSObject In TheResult 
     TheResultString += RSLT.ToString() + "<br/>" 
    Next 
    RemoteRunspace.Close() 
    ' Invoke the Exchange Management Shell to run the command. 
    Return TheResultString 
End Function 
+0

probablement un problème d'autorisations: https://support.microsoft.com/fr-us/help/2905767/-access-is-denied-error-quand-vous-connectez-vous-a-echange-en-ligne-en-utilisant-remote-windows-powershell – N0Alias

+0

Je lance le code sous l'utilisateur PSCredential dans lequel il fonctionne le mode débogage mais dans le serveur Web ne fonctionne pas –

+0

Parfois, les serveurs Web sont verrouillés dans les zones démilitarisées et peuvent ne pas être connectés au domaine, ce qui fait référence à AccountOperator La connexion et AccountOperatorPassword pourraient être le problème. – N0Alias

Répondre

1

i trouvé la solution pour tous ceux qui ont le même problème

  1. créer l'utilisateur en tant que membre (groupe de gestion du bénéficiaire)
  2. changement IIS (pour le serveur d'échange) accédez au Gestionnaire des services Internet | Site Web par défaut | PowerShell Modifiez le chemin physique de: C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\PowerShell à: C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\PowerShell

3.After le changement: IISRESET

et cela fonctionnera très bien

+0

Man vous m'a sauvé, je lutte ce problème depuis presque 3 jours, n'a pas trouvé de solution, je l'ai dit ok, il est temps de poser une question dans stackoverflow, puis je l'ai vu dans la liste des réponses suggérées, et wow travailler, merci beaucoup, j'ai édité votre question avec le message d'erreur complet, donc il sera plus facile pour les autres de trouver – Avshalom