堆叠

您如何区分由WriteObject()WriteWarning()WriteError()创建的PSObject?

以此开头:

psCmd = PowerShell.Create();
Runspace = RunspaceFactory.CreateRunspace();
Runspace.Open();
psCmd.Runspace = Runspace;
psCmd.AddCommand(cmdletName);
Collection<PSObject> results = null;
results = psCmd.Invoke();
results变量包含通过Commandlet传递的所有PSObject。如何识别由Commandlet的WriteObject()WriteError()WriteWarning()创建的PSObject?

我想添加实现以下目的的代码:
foreach(psObj in results) {
   if ( IsWarning(psObj) )
   {
     // Turn on yellow flashing lights
   }
   else if ( IsError(psObj) )
   {
     // Turn on red flashing lights
   }
   else
   {
     // Write to ticker-tape
   }
}

最佳答案

您应该能够对错误和其他消息使用Streams对象(Powershell)上的psCmd属性,并适当地处理它们:

if (psCmd.Streams.Error.Count > 0)
{
  Console.WriteLine("{0} errors", psCmd.Streams.Error.Count);
}

同样,您可以访问警告,调试,进度和详细信息。

在此处了解更多信息:http://msdn.microsoft.com/en-us/library/system.management.automation.psdatastreams_members(v=vs.85).ASPX

08-18 02:12