Описание номера:
Я создал хост для Powershell 2.0. Хост использует WPF и C#.Хост WPF для Powershell, форматирование вывода
Проблема в том, что большой вывод на мой хост WPF не отформатирован так же, как то, что отображается при использовании PowerShell ISE.
Когда я запускаю сценарий ls alias:
в Powershell ISE, результаты в виде таблицы, с CommandType, Название и Определение заголовков столбцов. Когда я запускаю тот же скрипт на моем хосте WPF, результаты просто представляют собой список имен псевдонимов. Аналогичная проблема возникает со многими другими скриптами, командами и псевдонимами.
Вопрос:
Как я могу получить такую же функциональность форматирования, которая, кажется, встроенный в Powershell ISE? Это проблема со стороны Powershell, или мне нужно включить дополнительный код на стороне WPF?
Пример код:
Вот класс я построил для обработки Powershell ввода и вывода, внутри WPF (рамочные любезности примера на code.msdn.microsoft.com, хотя мой класс не асинхронных):
internal class PSInterfacer
{
private Runspace runspace { get; set; }
public PSInterfacer()
{
runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
}
public string RunScript(string script)
{
string tempOut = "";
// create powershell instance
using (PowerShell ps = PowerShell.Create())
{
// add existing runspace
ps.Runspace = runspace;
// add script
ps.AddScript(script);
// pipe errors to the same output as normal results
ps.Commands.Commands[0].MergeMyResults(PipelineResultTypes.Error,
PipelineResultTypes.Output);
// put output in list
List<PSObject> psOutputs = ps.Invoke().ToList();
// display output elements, seperated by newlines
foreach (PSObject psObject in psOutputs)
{
if (psObject != null)
{
tempOut += psObject.BaseObject;
}
if (psObject != psOutputs.Last())
{
tempOut += Environment.NewLine;
}
}
return tempOut;
}
}
}
Разве это не просто конвейеру через [ 'Format-list'] (https://technet.microsoft.com/en-us/library/hh849957.aspx)? – stuartd