. Net основное консольное приложение Stop-WebAppPool Удаленное подключение через WinRM с использованием Microsoft.PowerShell.SDK - PullRequest
0 голосов
/ 05 апреля 2020

Мне нужна помощь для решения проблемы автоматического развертывания. Net Базовое веб-приложение Api на сервере. Как вы знаете, невозможно переписать .dll, если вы не остановите AppPool раньше, и в IIS нет решения для этого. На самом деле, используя PowerShell, я могу выполнить скрипт, чтобы сделать то, что мне нужно, скрипт показан ниже: PowerShell script

На самом деле мне нужно консольное приложение для выполнения той же работы, я обнаружил, что Я могу использовать Microsoft.PowerShell.SDK для реализации решения.

public static void RunC()
    {
        string us = "xxxxxxxxxxxxx"; //User
        string pw = "xxxxxxxxxxxxxxxx";//Passwprd
        string sv = "xxx.x.xx.xxx";//Server
        string apppoolname = "xxxxxxxxxxxxx";

        StringBuilder script = new StringBuilder();
        //Creazione script PS 
        script.Append("$password = ConvertTo-SecureString \"" + pw + "\" -AsPlainText -Force" + Environment.NewLine);
        script.Append("$user = \"" + us + "\"" + Environment.NewLine);
        script.Append("$cred = New-Object System.Management.Automation.PSCredential ($user,$password)" + Environment.NewLine);
        script.Append("Enter-PSSession -ComputerName \"" + sv + "\" -Credential $cred" + Environment.NewLine);
        script.Append("Import-Module webadministration");
        script.Append("Stop-WebAppPool \"" + apppoolname + "\"");
        Runspace runspace = RunspaceFactory.CreateRunspace();
        runspace.Open();

        Pipeline pipeline = runspace.CreatePipeline();
        pipeline.Commands.AddScript(script.ToString());

        //pipeline.Commands.Add("Out-String");

        Collection<PSObject> results = pipeline.Invoke();

        StringBuilder sb = new StringBuilder();
        foreach (PSObject pSObject in results)
        {
            sb.AppendLine(pSObject.ToString());

        }
        Console.WriteLine(sb.ToString());


    }

Но я получил сообщение об ошибке на изображении, швы Модуль не залит или что-то подобное ... кто-то может мне чем-то помочь?

Спасибо :-)

1 Ответ

0 голосов
/ 05 апреля 2020

Я не вижу ошибки в изображении, но если это проблема, вызванная отсутствием импорта WebAdministration, это должно исправить это:

#Requires -Modules WebAdministration

Поместите это в начало скрипта, и оно будет попробуйте импортировать модуль, если он еще не доступен в сеансе. Документация Microsoft:

Указывает модули PowerShell, необходимые для сценария. Введите имя модуля и необязательный номер версии.

Если необходимые модули отсутствуют в текущем сеансе, PowerShell импортирует их. Если модули не могут быть импортированы, PowerShell выдает ошибку завершения.

source

Надеюсь, это поможет, удачи.

...