我正在使用 C# 调用 powershell 命令,并且 powershell 命令在后台调用。我想终止后台线程。每次,我终止后台线程时,powershell仍在运行,这导致我无法再次运行该线程。有什么方法可以终止powershell执行吗?
后台线程如下:
Task.run(()=>{ while(...) {...
if (cancellationToken.IsCancellationRequested)
{
cancellationToken.ThrowIfCancellationRequested();
}}});
Task.run(()=>{
while(...) { powershell.invoke(powershellCommand);// it will execute here, I don't know how to stop.
} })
Run Code Online (Sandbox Code Playgroud) 我正在通过C#构建一个PowerShell主机,我想在调用PowerShell后显示结果。现在我使用以下方法:
public static string GetLogQueriedString(
PSMemberInfoCollection<PSPropertyInfo> PSPropertyCollection)
{
string line = string.Empty;
foreach (var item in PSPropertyCollection)
{
if (!line.Equals(string.Empty)) line += ",";
line += item.Name + " : " + item.Value;
}
return line;
}
Run Code Online (Sandbox Code Playgroud)
如果 PSObject 有许多我需要的属性,它就可以工作,但在这种情况下,如果 PSObject 是一个字符串,则结果不是我想要的。它将显示“长度:40”,而不是字符串本身。
还有一个问题:如果我执行几个PowerShell命令,为什么会显示所有结果,包括之前的结果。比如我执行“ls;get-process”,它会显示“ls”的结果和“get-process”的结果。