none
Передать учетные данные по сети Powershell RRS feed

  • Вопрос

  • Добрый день.

    Мне необходимо запустить на удаленной машине процесс от имени другого пользователя(пользователя удаленной машины), код выглядит так:

    Invoke-Command -ComputerName test-stepan -ScriptBlock{
                  param($cred)
                                                                                    
                              Start-Process notepad -WorkingDirectory "C:\windows\system32\"  -Credential $cred 
                                             
                      } -ArgumentList $cred

    При выполнение данного кода получаю ошибку:

    Не удается выполнить команду из-за следующей ошибки: Отказано в доступе.
        + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOp 
       erationException
        + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.C 
       ommands.StartProcessCommand
        + PSComputerName        : test-stepan

    Ошибки точно нет в учетных данных. Переменную $cred скрипт получает из функции, в которой имя пользователя подставляется, а пароль берется из файла, где хранится в зашифрованном виде. В чем тут подвох? 

    7 августа 2013 г. 9:44

Ответы

  • PowerShell Remoting имеет ограничения в безопасности, да и интерактивные процессы не поддерживает. 

    1) PsExec

    psexec -h -u XXX -p Passw0rd1 notepad

    2) Task Scheduler(если пользователь вошел в  систему)

    schtasks.exe /Create /RU XXX /RP Passw0rd1 /SC ONSTART /TN "Report" /TR notepad.exe

    schtasks.exe /Run  /TN "Report"

    schtasks.exe /Delete  /TN "Report" 

    • Предложено в качестве ответа Alexander RusinovModerator 7 августа 2013 г. 15:25
    • Помечено в качестве ответа SteFFun 9 августа 2013 г. 7:56
    7 августа 2013 г. 12:58
    Отвечающий

Все ответы

  • PowerShell Remoting имеет ограничения в безопасности, да и интерактивные процессы не поддерживает. 

    1) PsExec

    psexec -h -u XXX -p Passw0rd1 notepad

    2) Task Scheduler(если пользователь вошел в  систему)

    schtasks.exe /Create /RU XXX /RP Passw0rd1 /SC ONSTART /TN "Report" /TR notepad.exe

    schtasks.exe /Run  /TN "Report"

    schtasks.exe /Delete  /TN "Report" 

    • Предложено в качестве ответа Alexander RusinovModerator 7 августа 2013 г. 15:25
    • Помечено в качестве ответа SteFFun 9 августа 2013 г. 7:56
    7 августа 2013 г. 12:58
    Отвечающий
  • Но странно, я передаю переменную $cred в сеанс удаленной машины, и в этом сеансе я вижу ее значение, она содержит все необходимые учетные данные. Так почему же она не работает? Если я, к примеру, запрошу учетные данные в интерактивном режиме из сеанса удаленной машины и затем введу их то все сработает. 
    7 августа 2013 г. 13:18
  • Но странно, я передаю переменную $cred в сеанс удаленной машины, и в этом сеансе я вижу ее значение, она содержит все необходимые учетные данные. Так почему же она не работает? Если я, к примеру, запрошу учетные данные в интерактивном режиме из сеанса удаленной машины и затем введу их то все сработает. 

    Причем  тут переменная $cred? Это ограничение безопасности  PowerShell Remoting.
    7 августа 2013 г. 13:27
    Отвечающий
  • Сделал через PSexec, работает. Спасибо!
    9 августа 2013 г. 7:56