Проблема скрипта PowerShell - PullRequest
0 голосов
/ 21 сентября 2011

Вот код:

static String checkBackUp()
{
    Runspace runspace = RunspaceFactory.CreateRunspace();

    runspace.Open();

    Pipeline pipeline = runspace.CreatePipeline();                     
    pipeline.Commands.Add("Get-WBSummary");
    pipeline.Commands.Add("Out-String");

    Collection<PSObject> results = new Collection<PSObject>();
    try
    {
        results = pipeline.Invoke();
    }
    catch (Exception ex)
    {
        results.Add(new PSObject((object)ex.Message));
    }

    runspace.Close();

    StringBuilder stringBuilder = new StringBuilder();
    foreach (PSObject obj in results)
    {
        stringBuilder.AppendLine(obj.ToString());
    }

    return stringBuilder.ToString();
}

Проблема в том, что при этом выполняется каждый командлет (например, Get-Process), но когда я пытаюсь проверить, было ли выполнено резервное копирование (Get-WBSummary), он выдает следующую ошибку:

Термин «Get-WBSummary» не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.

Однако, когда я помещаю команду прямо в PowerShell, она выполняет ее. Я уже пытался добавить SnapIn, но это не сработало.

Что я здесь не так делаю?

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Get-WBSummary - это не обычный встроенный командлет Powershell. Вам нужно будет сделать

Add-PSSnapin Windows.ServerBackup

в некоторый момент в вашем коде после инициализации пространства выполнения.

0 голосов
/ 07 февраля 2014

Вам нужно будет создать начальное состояние сеанса и добавить оснастку. Вот как это сделать

initialSession = InitialSessionState.CreateDefault();
initialSession.ImportPSModule(new[] {"Path\to\module\here"});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...