C# 检查PowerShell窗口是否支持用户交互

C# 检查PowerShell窗口是否支持用户交互,c#,powershell,C#,Powershell,我正在使用“PowerShellInstance”类在C#中执行PowerShell脚本,但我对commandlet“Clear Host”有问题。我得到了一些与主机程序或命令类型不支持用户交互相关的错误 但是,必须能够通过PowerShell直接执行此脚本(无需使用C#),因此,我希望仅当脚本是从PowerShell窗口中触发的,而不是从C#代码触发时,才执行“Clear Host”命令 到目前为止,我找到的唯一方法是将它包装在“Try{}Catch{}”块中,但我想知道是否有更好的解决方案。

我正在使用“PowerShellInstance”类在C#中执行PowerShell脚本,但我对commandlet“
Clear Host
”有问题。我得到了一些与主机程序或命令类型不支持用户交互相关的错误

但是,必须能够通过PowerShell直接执行此脚本(无需使用C#),因此,我希望仅当脚本是从PowerShell窗口中触发的,而不是从C#代码触发时,才执行“
Clear Host
”命令

到目前为止,我找到的唯一方法是将它包装在“
Try{}Catch{}
”块中,但我想知道是否有更好的解决方案。。。类似于“
if($host.IsOk){}


谢谢

好的,如果我理解正确,你想要这样的东西:

if($host.UI.RawUI.WindowTitle -match "PowerShell")

{

Clear-Host

}

else

{

"The script was executed from C#"

}

好吧,如果我理解正确的话,你想要这样的东西:

if($host.UI.RawUI.WindowTitle -match "PowerShell")

{

Clear-Host

}

else

{

"The script was executed from C#"

}

看起来不错,但它可靠吗?我的意思是,没有任何方法可以在没有标题包含“Powershell”的Powershell窗口中启动脚本吗?如果没有,我想你的答案就是我想要的:-)好的,你想从另一个PowerShell会话中启动PowerShell脚本吗,如下所示:启动进程PowerShell.exe-ArgumentList“-NoProfile-file script.ps1”或者在PowerShell窗口中启动一个全新的PowerShell脚本,如下所示:PowerShell.exe-windowstyle normal-executionpolicy remotesigned-file script.ps1也许您可以共享您的代码,以便我知道我们的立场:)看起来像,是的,但它可靠吗?我的意思是,没有任何方法可以在没有标题包含“Powershell”的Powershell窗口中启动脚本吗?如果没有,我想你的答案就是我想要的:-)好的,你想从另一个PowerShell会话中启动PowerShell脚本吗,如下所示:启动进程PowerShell.exe-ArgumentList“-NoProfile-file script.ps1”或者在PowerShell窗口中启动一个全新的PowerShell脚本,如下所示:PowerShell.exe-windowstyle normal-executionpolicy remotesigned-file script.ps1也许您可以共享您的代码,以便我知道我们的立场:)