Ich möchte einige Powershell-Skripts über die Automatisierung ausführen. Etwas wie:So führen Sie PowerShell-Skripts über die Automatisierung aus, ohne auf Probleme mit dem Host zuzugreifen
IList errors;
Collection<PSObject> res = null;
using (RunspaceInvoke rsi = new RunspaceInvoke())
{
try
{
res = rsi.Invoke(commandline, null, out errors);
}
catch (Exception ex)
{
LastErrorMessage = ex.ToString();
Debug.WriteLine(LastErrorMessage);
return 1;
}
}
das Problem, das ich mit Blick auf bin, ist, dass, wenn mein Skript-Cmdlets wie write-host
verwendet die oben ein wirft System.Management.Automation.CmdletInvocationException
-
Kann diese Funktion nicht aufrufen, weil der aktuellen Host nicht nicht implementiert es.
Was sind einige gute Möglichkeiten, um dieses Problem zu umgehen?
Scott, ich habe das gleiche Problem. Könnten Sie eine Anleitung oder einen Code dazu geben, wie Sie die Implementierung durchgeführt haben? –
Ok, habe die Antwort selbst gefunden: Erben Sie einfach PSHost, PSHostUserInterface und PSHostRawUserInterface und lassen Sie die Methoden nichts/null zurückgeben. Um zu verfolgen, was normalerweise passieren würde, könnten Nachrichten/Texte, die sonst in der cmd-Zeile gedruckt würden, protokolliert werden. –