C # с помощью PowerShell - PullRequest
       9

C # с помощью PowerShell

2 голосов
/ 19 сентября 2019

Моя цель - запустить задачу на удаленном сервере, для этого я хотел бы использовать WinRM.Возникли проблемы с выполнением этой работы.

Запуск из окна powershell работает нормально, если вы делаете это следующим образом.

New-PSSession -ComputerName y49800 | Enter-PSSession
E:
E:\work\application.exe

Выполнение этого из C # - другая история.Перепробовал много вариантов, но ничего не работает.В качестве шага я попытался запустить первую команду, как указано ниже.Похоже, что он работает нормально, но если я изменю имя domputer на что-то, что не существует, это выдаст мне ошибку вывода.Мне также нужно выполнить следующие шаги, где я меняю диск и запускаю свою программу.

try {
    using (PowerShell PowerShellInstance = PowerShell.Create()) {
        // use "AddScript" to add the contents of a script file to the end of the execution pipeline.
        // use "AddCommand" to add individual commands/cmdlets to the end of the execution pipeline.
        var instance = PowerShellInstance.AddScript(@"New-PSSession -ComputerName y49800 | Enter-PSSession");

        //// use "AddParameter" to add a single parameter to the last command/script on the pipeline.
        //PowerShellInstance.AddParameter("param1", "parameter 1 value!");

        // invoke execution on the pipeline (collecting output)
        Collection <PSObject> PSOutput = instance.Invoke();
        // loop through each output object item
        foreach (PSObject outputItem in PSOutput) {
            // if null object was dumped to the pipeline during the script then a null
            // object may be present here. check for null to prevent potential NRE.
            if (outputItem != null) {
                //TODO: do something with the output item 
                test = outputItem.ToString();
            }
        }
    }
} catch (Exception exc) {
    System.Console.WriteLine(exc.Message);
}
...