2013-09-06 4 views
1

Stack,испытания, если PSObject возник из WriteObject) WriteWarning() WriteError (()

Как отличить с PSObjects создаются WriteObject() WriteWarning() WriteError()?

Начиная с этого:

psCmd = PowerShell.Create(); 
Runspace = RunspaceFactory.CreateRunspace(); 
Runspace.Open(); 
psCmd.Runspace = Runspace; 
psCmd.AddCommand(cmdletName); 
Collection<PSObject> results = null; 
results = psCmd.Invoke(); 

Переменная results содержит все PSObjects конвейеру вне commandlet. Как вы определяете PSObjects, которые были созданы WriteObject() WriteError() WriteWarning() командой?

Я хочу, чтобы добавить код, который обеспечивает следующее:

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 
    } 
} 

ответ

4

Вы должны быть в состоянии использовать 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

 Смежные вопросы

  • Нет связанных вопросов^_^