以下是代码:
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,但这不起作用。
我在这里做错了什么?
答案 0 :(得分:1)
Get-WBSummary
不是常规的内置Powershell cmdlet。你需要做
Add-PSSnapin Windows.ServerBackup
在初始化运行空间后,代码中的某个位置。
答案 1 :(得分:0)
您必须创建初始会话状态并添加管理单元。这是怎么做的
initialSession = InitialSessionState.CreateDefault();
initialSession.ImportPSModule(new[] {"Path\to\module\here"});