Exchange 2010 + Powershell и C # проблемы с получением PSCredential от текущего пользователя - PullRequest
2 голосов
/ 10 февраля 2011

Я бы хотел выполнить операции Exchange 2010 с PowerShell через C #. Я могу установить соединение, как показано ниже. Мой вопрос: как я могу создать соединение без явного указания учетных данных? Не могу ли я получить его через текущий идентификатор пользователя Windows?

SecureString password = new SecureString();
string str_password = "pass";
string username = "userr";
string liveIdconnectionUri = "http://exchange.cccc.com  /Powershell?serializationLevel=Full";

foreach (char x in str_password)
{
password.AppendChar(x);
}

PSCredential credential = new PSCredential(username, password);

// Set the connection Info
WSManConnectionInfo connectionInfo = new WSManConnectionInfo((new Uri(liveIdconnectionUri)), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credential);

connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Default;

Ответы [ 2 ]

3 голосов
/ 10 февраля 2011

Попробуйте [System.Net.NetworkCredential]::DefaultCredentials. Из документов:

DefaultCredentials представляет системные учетные данные для текущего контекст безопасности, в котором приложение работает. Для клиентское приложение, это обычно учетные данные Windows (пользователь имя, пароль и домен) пользователь, запустивший приложение.

Эта функция из скрипта PoshCode.org показывает, как преобразовать чистый кредит в кредит ps:

Function ConvertTo-PSCredential {
#.Synopsis
#   Helper function which converts a NetworkCredential to a PSCredential
Param([System.Net.NetworkCredential]$Credential)
   New-Object System.Management.Automation.PSCredential `
              "$($Credential.UserName)@$($Credential.Domain)", `
              (ConvertTo-SecureString $Credential.Password -AsPlainText -Force)
}

Обратите внимание, что в исходной функции PoshCode был какой-то посторонний неиспользуемый скрипт, который я удалил.

2 голосов
/ 10 февраля 2011

Я не знаю, как создать объект PSCredential из токена безопасности. Я думаю, что общий рабочий процесс заключается в том, чтобы запрашивать у пользователя учетные данные в этих ситуациях, чтобы избежать дыр, связанных с повышением безопасности.

Вероятно, вам следует запросить у пользователя учетные данные, используя PSHostUserInterface.PromptForCredentials .

Есть также несколько примеров кэширования учетных данных: «Сценарий PowerShell: Export-PSCredential и Import-PSCredential» . Используйте на свой страх и риск

...