(C #) Получение «Отказано в доступе» ошибка при создании удаленного сеанса PowerShell - PullRequest
0 голосов
/ 01 октября 2018

У меня проблема с C # и powershell.У меня ASPA WebApi запущен на сервере, и он мне нужен, чтобы открыть удаленный сеанс PowerShell с Microsoft Exchange для получения данных из почтовых ящиков комнат.Я использую этот код для подключения:

PowerShell instance = PowershellHelper.Instance;

instance.AddScript("$passUnsafe = \"" + Password + "\";" +
"$pass = $passUnsafe | convertto-securestring -AsPlainText -Force;" +
"$UserCredential = new-object -typename System.Management.Automation.PSCredential -argumentlist \"" + Username + "\",$pass;" +
"if (!(Get-PSSession | Where { $_.ConfigurationName -eq \"Microsoft.Exchange\" })) { $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection; }" +
"else { $Session = (Get-PSSession | Where { $_.ConfigurationName -eq \"Microsoft.Exchange\" })[0]; }" +
"Import-PSSession $Session -DisableNameChecking;");

PowershellHelper.Instance.Streams.Error.Clear();
instance.Invoke();

Это прекрасно работает на моей локальной машине, но не на удаленном сервере.Сценарий завершается с ошибкой при попытке выполнить «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.

После некоторых исследований я обнаружил, что это происходит из-за того, что пользователям без прав администратора не разрешено выполнять команды удаленного сеанса.Если я добавлю пользователя пула приложений IIS в группу администраторов, он будет работать нормально, но я хочу избежать этого, если это возможно.Некоторые люди говорят, что вы можете добавить пользователя во встроенную группу «Пользователи удаленного управления», но у меня это не сработало.Я даже пытался изменить права пользователя напрямую, предоставив ему полный доступ, но он тоже не работает.Это работает, только если я добавлю его в группу администраторов.Кажется, что-то еще блокирует выполнение, или IIS игнорирует группы пользователей.Учетные данные в порядке.Кто-нибудь знает, есть ли другой способ выполнения удаленных команд powershell без прав администратора?

1 Ответ

0 голосов
/ 08 ноября 2018

В соответствии с комментариями Саймона Ли вы можете предоставить учетной записи разрешения на удаленное выполнение PowerShell с помощью следующего сценария PowerShell:

Set-User "XXXXX" -RemotePowerShellEnabled $true

https://docs.microsoft.com/en-us/powershell/exchange/exchange-server/control-remote-powershell-access-to-exchange-servers?view=exchange-ps

...