代码之家  ›  专栏  ›  技术社区  ›  craigdfrench

通过PSSessionConfiguration文件获取Enter PSHostProcess行为

  •  3
  • craigdfrench  · 技术社区  · 10 年前

    场景:嵌入Powershell主机的Windows服务。启动时分配单个运行空间。多dll解决方案。

    要求:需要访问正在运行的服务中的.NET类。从本地Powershell实例使用

    Enter-PSHostProcess -Name MyService 
    

    …因为我可以访问.NET类,所以提供了我想要的内容。

    [MyNameSpace.MyClass]::CallStaticFunction()
    

    问题:如何使用Enter-PSSession向自定义端点提供Powershell行为?从Register PSSessionConfiguration中,我们可以指定一个dll,但这将生成一个进程,并且不会连接到正在运行的实例。对通过HTTPS或命名管道编写代理不感兴趣,但使用Powershell为.NET支持提供的本机功能。

    是否可以通过PSSessions对此进行扩展?还是我们必须先执行Enter-PSSession或Invoke Command?

    1 回复  |  直到 10 年前
        1
  •  4
  •   Burt_Harris    10 年前

    回顾资料来源 Enter-PSHostProcess 和 Enter-PSSession 都是非常独立的机制。 输入PSHostProcess 通过命名管道进行通信,而 输入PSSession 使用WinRM(它在端口5985/5986上有效地使用http。我认为您也不需要 输入PSSession 或 Invoke-Command 如果希望通过以下方式交互式访问本地服务流程 输入PSHostProcess .

    get-process Powershell_ise | Enter-PSHostProcess
    

    [System.Environment]::exit(0)
    

    Powershell使用线程的默认安全描述符创建与之连接的命名管道,通常只允许访问LocalSystem、Administrators和进程运行所使用的帐户。我的测试成功了,因为两个进程都在同一帐户下运行(我不需要管理员权限)

    但要明确的是, 输入PSHostProcess 输入PSSession ,然后使用连接到进程 输入PSHostProcess .

    推荐文章