Вызов скрипта Powershell из службы windows, написанной в C# - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть windows сервис, написанный на C#, и он вызывает внутри него скрипт powershell, используя следующий код:

using (Runspace runspace = RunspaceFactory.CreateRunspace())
{
    runspace.Open();
    using (var powershell = PowerShell.Create())
    {
        powershell.Runspace = runspace;
        powershell.AddCommand("Invoke-Command")
          .AddParameter("ComputerName", remoteComputer)
          .AddParameter("FilePath", scriptPath)
          .AddParameter("ArgumentList", new object[] { credential,IndexList,FilePath });
        psOutput = powershell.Invoke();
    }
    runspace.Close();
}

Я получаю сообщение об ошибке ниже: Connecting to remote server <computername> failed with the following error message : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic. Хотя тот же код работает, если он запускается как консольное приложение, но я получаю эту ошибку при запуске его как windows service.

Я что-то здесь не так делаю? или есть другой способ вызвать скрипт powershell в windows сервис?

1 Ответ

0 голосов
/ 06 февраля 2020

кажется, что вы все делаете правильно, но удаленный компьютер не настроен должным образом. Попробуйте выполнить командлет

Enable-PSRemoting

на целевом компьютере в режиме повышенной мощности. Это должно настроить службу WinRm для включения удаленного взаимодействия и добавить правило брандмауэра для удаленного взаимодействия. Для получения дополнительной информации смотрите здесь:

https://docs.microsoft.com/en-us/p owershell / module / microsoft.powershell.core / enable-psremoting? View = powershell-7

...