bjay tiamsic Ответов: 1

Запуск сценария powershell, сохраненного на другом сервере


Привет.

У меня возникли проблемы с запуском сценария powershell, сохраненного на другом сервере.
Мне нужно выполнить скрипт PowerShell в C#.
Сервер 1-это место, где сохраняется программа C#
Сервер 2-это место, где сохраняется сценарий powershell.

Вот мой метод c#

где переменная serviceList это параметр/аргумент, который должен быть передан сценарию powershell.

переменная psPath будет содержать строку типа "\\[serveripaddress]\g$\adminscripts\dotalltool_scripts\stopservice.ps1

public string runScriptPS(string serviceList, string operation)
        {
            string psFileName = operation == "Stop" ? "stopservice.ps1" : operation == "Start" ? "startservice.ps1" : "restartservice.ps1";
            string server = hdnServerSelected.Value;
            string psPath = @"\\" + server + @"\g$\AdminScripts\dotalltool_scripts\" + psFileName;
            string paramSapArray = (char)34 + serviceList + (char)34;
         


            Runspace runspace = RunspaceFactory.CreateRunspace();
            runspace.Open();

            RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
            Pipeline pipeline = runspace.CreatePipeline();
            Command psCmd = new Command(psPath);
            CommandParameter sapParam = new CommandParameter("SAPArray", paramSapArray);
            psCmd.Parameters.Add(sapParam);
            pipeline.Commands.Add(psCmd);

            Collection<PSObject> results = pipeline.Invoke("Set-ExecutionPolicy Unrestricted");

            

            StringBuilder sb = new StringBuilder();
            foreach (PSObject obj in results)
            {
                sb.AppendLine(obj.ToString());
            }
            string a = sb.ToString();
            return sb.ToString();
        }



Вот ошибка, которую я получаю

File \\serveripaddress\g$\AdminScripts\dotalltool_scripts\stopservice.ps1 cannot be loaded. The file \\serveripaddress\g$\AdminScripts\dotalltool_scripts\stopservice.ps1 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.]


Что я уже пробовал:

Я уже указал политику исполнения на конвейере.Взывать()

1 Ответов

Рейтинг:
1

RickZeeland

Смотрите статью CodeProject здесь: Включить удаленное выполнение PowerShell в C#[^]

Вы также можете быть заинтересованы в: Запуск PSexec в многопоточном режиме с помощью Powershell[^]