В качестве альтернативы вы можете перенаправить потоки и использовать стандартные записи-ошибки, записи-подробности и т. Д. CMDlets в своем скрипте.
В приложении C # прикрепляйте методы к событиям потоков, например:
PowerShell ps = PowerShell.Create();
// ... code to add your script, etc.
ps.Streams.Warning.DataAdded += new EventHandler<DataAddedEventArgs>(Warning_DataAdded);
// ... attach more streams for other log levels
ps.Invoke();
Создайте свои методы так:
static void Warning_DataAdded(object sender, DataAddedEventArgs e)
{
PSDataCollection<WarningRecord> warningStream = (PSDataCollection<WarningRecord>)sender;
log.Warn(warningStream[e.Index].Message);
}
Это должно записать все, что вы выводите в скрипте PowerShell через
Write-Warning "This is a warning message"
до уровня Предупреждения в log4net.