【问题标题】:how to run a powershell script as a windows service from inside a Java program?如何从 Java 程序内部将 powershell 脚本作为 Windows 服务运行?
【发布时间】:2017-03-21 12:28:25
【问题描述】:

我有以下从 Java 内部运行 Windows 服务的代码。代码使用 JInterop Java 库,JInterop 是 Windows COM 服务器的纯 Java COM 客户端。更多关于 JIntop 的详细信息,请点击此处 [http://fishi.devtail.io/weblog/2015/01/21/pure-java-dcom-bridge-j-interop/]

    String cmdFile = "service.bat";
results = wbemServices_dispatch.callMethodA(
                "Get", new Object[]{ new JIString("Win32_Process"),
                new Integer(0), JIVariant.OPTIONAL_PARAM()});

        IJIDispatch wbemObjectSet_dispatch = (IJIDispatch)JIObjectFactory.narrowObject(
                (results[0]).getObjectAsComObject());
results = wbemObjectSet_dispatch.callMethodA("Create",
                new Object[]{ new JIString(targetFilePrefix + cmdFile),
                JIVariant.OPTIONAL_PARAM(),
                JIVariant.OPTIONAL_PARAM()});

是否可以以与上述相同的方式使用相同的库或以其他方式将 powershell 文件(.ps1)作为服务运行。

【问题讨论】:

    标签: java powershell wmi wmi-service j-interop


    【解决方案1】:

    您可以创建一个批处理文件,该文件反过来可以触发这样的 powershell 脚本:

    @echo off
    Powershell.exe set-executionpolicy remotesigned -File  C:\folder\MyScript.ps1
    pause
    

    另存为“Trigger_ps.bat”

    然后您可以使用 sc 命令通过提及此批处理文件路径来创建 Windows 服务,如下所示:

    SC CREATE PS_Trigger_Service Displayname= "PS_Trigger_Service" binpath= "C:\folder\Trigger_ps.bat" start= auto
    

    这应该可以解决您的目的。

    【讨论】:

    • 我可以在远程机器上创建然后启动/停止/删除该服务吗?
    • 当然,你可以做到。 @Manjur
    猜你喜欢
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 2010-09-07
    • 2019-05-08
    • 1970-01-01
    相关资源
    最近更新 更多