PowerShell脚本问题

这是代码:

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();
}

问题是这会运行每个cmdlet(例如 Get-Process )但是当我尝试验证是否已进行备份时( Get-WBSummary ),它会发出以下错误:

术语“Get-WBSummary”未被识别为cmdlet,函数,脚本文件或可操作程序的名称 . 检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试 .

但是,当我将命令直接放入PowerShell时,它会执行命令 . 我已经尝试添加SnapIn但这不起作用 .

我在这做错了什么?

回答(2)

2 years ago

Get-WBSummary isn 't a regular built-in Powershell cmdlet. You' ll需要做的

Add-PSSnapin Windows.ServerBackup

在初始化运行空间后,在代码中的某个点 .

2 years ago

您必须创建初始会话状态并添加管理单元 . 这是怎么做的

initialSession = InitialSessionState.CreateDefault();
initialSession.ImportPSModule(new[] {"Path\to\module\here"});