簡體   English   中英

如何從Java程序內部運行PowerShell腳本作為Windows服務?

[英]how to run a powershell script as a windows service from inside a Java program?

我有以下代碼從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)作為服務運行。

您可以創建一個批處理文件,反過來,它可以觸發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

這應該可以解決你的目的。

您可以使用SCNew-Service創建Windows服務,然后可以運行這樣的ps1文件:

sc.exe create "PS1Service" binPath= "powershell.exe -NoLogo -Path D:\Script.ps1"

用於創建用戶定義服務的參考鏈接

參考鏈接到新服務的使用

這一切你可以從JAVA稱之為,這應該可以解決你的目的。

如果您有Visual Studio,那么您可以直接執行像運行PS代碼作為Windows服務

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM