Автоматизация PowerShell из C# под другим пользователем - PullRequest
1 голос
/ 12 марта 2020

Я пытаюсь запустить локальный экземпляр PowerShell из C# под другими учетными данными пользователя, а затем продолжаю вызывать команды из C#. Возможно ли это?

Если я запускаю PowerShell напрямую (без использования пространств выполнения) следующим образом:

PowerShell ps = PowerShell.Create()

Похоже, что PS не работает вне процесса. Таким образом, он запускается с теми же учетными данными, что и мое приложение C#. Если я пытаюсь запустить этот код под олицетворением, он на самом деле выдает исключение (даже если старые сообщения утверждают, что вы можете это сделать).

Если я пытаюсь создать Runspace вне процесса, например:

RunspaceFactory.CreateOutOfProcessRunspace()

нет способа передать учетные данные, которые я могу найти.

Я знаю, что могу запустить PS под разными учетными данными и выполнить сценарий, отправив команду «Start-Process», но затем Я теряю программирование c интерактивность с C#. Я не вижу результатов вызова сценария.

Кажется, что единственный способ запустить PS из C# под другим пользователем с помощью предписанных методов - это использовать удаленные пространства выполнения, за исключением указания URI в качестве localhost :

PSCredential creds = new PSCredential(UserName, GetSecurePassword(Password));

Uri RemoteComputerUri = Uri ?? new Uri($"{Scheme}://{ComputerName}:{Port}/wsman");
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(RemoteComputerUri, Schema, creds);

using (Runspace remoteRunspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
      remoteRunspace.Open();
      PowerShell ps = PowerShell.Create();
      ...
}

Но я не хочу требовать настройки WSMan / HTTP, которая требуется для удаленных пространств выполнения. Я просто хочу запустить PS вне процесса с другими учетными данными, но при этом иметь возможность взаимодействовать с ним через C#.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...