通过连接到已运行的 PowerShell 进程,可以完成一些有用的事情。 例如, 此答案使用该技术通过允许运行空间首先完成清理来优雅地停止目标 PowerShell 进程。停止进程的明显方法都不允许如此优雅地关闭。
该解决方案是通过在目标进程中创建运行空间和 powershell 类实例来实现的:
$pipe = [Runspaces.NamedPipeConnectionInfo]::new($Process.Id)
$rs = [runspacefactory]::CreateRunspace($pipe)
$rs.Open()
$ps = [powershell]::Create($rs)
该代码片段依赖于PowerShell.Create(Runspace)
。但是,该重载在 Windows PowerShell SDK 中不可用。
我不太熟悉 PowerShell 远程处理和运行空间,也没有发现使用 Windows PowerShell 完成类似操作的明显方法。有可能吗?如果可以,怎么做?