Использование System.Management.Automation (v. 10.0.10586) Я могу успешно выполнить команду Exchange Online PowerShell из приложения Windows, но мне нужно сделать это из приложения ASP.NET. Я получаю сообщение об ошибке «Доступ запрещен», когда я пытаюсь открыть пространство выполнения в веб-приложении, если я не позволю пулу приложений веб-приложения работать под учетной записью, такой как локальная служба. Есть ли способ сделать это, не предоставляя веб-приложению такие широкие разрешения?
Microsoft предлагает добавить пользователя Exchange в роль администратора, но это не моя проблема, поскольку я могу выполнять команды PowerShell с помощью приложения Windows и тех же учетных данных Exchange (https://support.microsoft.com/en-za/help/2905767/access-is-denied-error-when-you-connect-to-exchange-online-by-using-re).
Я также пытался предложить Microsoft выдавать себя за конкретного пользователя в коде, но это, похоже, не работает (https://support.microsoft.com/en-us/help/306158/how-to-implement-impersonation-in-an-asp-net-application).
Dim userName As String = ConfigurationManager.AppSettings("ExchangeUserName")
Dim password As String = ConfigurationManager.AppSettings("ExchangePassword")
Dim securePassword As System.Security.SecureString = New System.Security.SecureString()
For Each c As Char In password
securePassword.AppendChar(c)
Next
Dim credentials As PSCredential = New PSCredential(userName, securePassword)
Dim connection As WSManConnectionInfo = New WSManConnectionInfo(New Uri("https://outlook.office365.com/powershell-liveid"), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credentials) With {
.AuthenticationMechanism = AuthenticationMechanism.Basic,
.SkipCACheck = True,
.SkipCNCheck = True,
.SkipRevocationCheck = True,
.NoEncryption = False,
.MaximumConnectionRedirectionCount = 4
}
Using runSpace As Runspace = RunspaceFactory.CreateRunspace(connection)
runSpace.Open()
End Using
Сбой процедуры в runSpace.Open () со следующей ошибкой:
System.Management.Automation.Remoting.PSRemotingTransportException: не удалось подключиться к удаленному серверу exchangeserver.admin.com со следующим сообщением об ошибке: Доступ запрещен. Для получения дополнительной информации см. Раздел справки about_Remote_Trou Troubleshooting.