2015-11-20 9 views
0

Итак, я пытаюсь вызвать скрипт PS из приложения ASPX/C#. Когда я запускаю сценарий PS из командной строки (PS C:\scripts> ./do-barrelRoll.ps1 -s remoteComputer), он работает так, как ожидалось. Но когда я использую C#, он не может подключиться к удаленному компьютеру (неправильный пользователь/пароль). Удовлетворяющий факт: пользователь и пароль для использования находятся внутри раздела конфигурации самого скрипта PS (см. Переменную $SETUP)! Что я делаю не так?Powershell Invoke-Command ASPX/C# против командной строки

Точное сообщение об ошибке из ASPX (имя сервера правильно!):

[remoteComputer] Connecting to remote server remoteComputer failed with the following error message : The user name or password is incorrect 

Соответствующие части PS Script:

set-alias new New-Object 
$passwd = $SETUP["password"] | ConvertTo-SecureString -asplaintext -force 
$session = new -TypeName System.Management.Automation.PSCredential -argumentlist $SETUP["user"], $passwd 

Invoke-Command –ComputerName $PARAM["s"] -Credential $session –ScriptBlock { 
    # Do a barrel roll 
} 

Соответствующие части ASPX применения/C#:

using System.Management.Automation; 

public ActionResult doAction(string server, string action) 
{ 
    var split = server.Split(';'); 
    //... 
    var ps = PowerShell.Create(); 
    ps.AddScript("Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned -f; C:\\scripts\\do-barrelRoll.ps1 -s " + split[1]); 
    Collection<PSObject> results = ps.Invoke(); 
    // Here I retrive the results and the content of the error stream and display them 
} 

ответ

0

Он работает, как ожидалось, в командной строке, скорее всего, потому, что ваша учетная запись имеет полный доступ к скрипту и может r не все. Учетная запись .NET должна быть более ограничена. Вам нужно будет проверить, что учетная запись имеет права запускать неограниченные скрипты. Проверьте местные политики, а затем оттуда. Вы, скорее всего, не та же учетная запись, что и приложение .NET.

+0

Да, но учетные данные для использования находятся внутри сценария PS ... Также я поднимаю настройки процесса непосредственно перед выполнением скрипта. Скрипт выполняется с ошибкой (см. Сообщение об ошибке) –

+0

@MarcoAlka Это не про учетные данные, которые у вас есть в вашем скрипте, это процесс, на котором выполняется исполняемый скрипт, на который вы должны обратить внимание. В большинстве безопасных сред неограниченные сценарии по умолчанию отключены. – Josh

+0

Но почему он жалуется на имя пользователя/пароль? Я запускал «Set-ExecutionPolicy -f неограниченно» на сервере с .NET-приложением и на целевом сервере. Проблема сохраняется. –