在 Windows 服务中运行 powershell 脚本 [英] Run a powershell script inside a windows service

查看:48
本文介绍了在 Windows 服务中运行 powershell 脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个运行良好的 powershell 脚本,我在 power shelle 命令行中调用此脚本:

PS C:>.\myscript.ps1 -var1 variable1 -var2 variable2

我需要使用愚蠢的 sc create 将其安装在服务中,但我找不到启动它的方法

有什么帮助吗?

非常感谢.

解决方案

使用 Windows 服务包装器.它是高度可配置的,并提供了许多有用的选项,例如日志轮换、服务帐户、失败操作等.它甚至可以自动从 URL 下载资源并将其作为文件放置在本地,因此您可以将脚本托管在某处并自动更新.以下是启动和运行 PowerShell 服务的基本步骤:

  1. 下载\构建 winsw.可以在此处找到 1.x 版二进制文件.要构建最新的 winsw 2.x,请使用 Visual Studio Community 2013(开源项目免费).更详细的构建说明位于此处.
  2. 为您的服务创建 XML 配置文件.示例:

    <id>MyPsSvc</id><name>我的 PowerShell 服务</name><description>用你的电脑做一些有趣的事情</description><executable>PowerShell.exe</executable><logmode>重置</logmode><arguments>-ExecutionPolicy Bypass -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -File "myscript.ps1" -var1 variable1 -var2 variable2</arguments></服务>

    配置文件必须与 winsw 可执行文件具有相同的基名,即:

    • winsw.exe
    • winsw.xml
  3. 如果您打算在没有互联网连接的 PC 上使用您的服务,禁用 winsw 的数字签名验证.为此,请创建文件 winsw.exe.config.示例:

    <预><代码><配置><运行时><generatePublisherEvidence enabled="false"/></运行时></配置>

  4. 如果您运行的是 Windows Server 2012 或 Windows 8 并且不想安装 .Net 2.0 支持,在上述配置文件中指定.NET 4.0 运行时支持:

    <预><代码><配置><运行时><generatePublisherEvidence enabled="false"/></运行时><启动><supportedRuntime version="v2.0.50727"/><supportedRuntime version="v4.0"/></启动></配置>

  5. 安装您的服务,从命令行运行 winsw.exe install.安装服务后,您可以从 Windows 服务管理器启动它.

I have a powershell script running very well , I'm calling this script within a power shelle command line :

PS C:> .\myscript.ps1 -var1 variable1 -var2 variable2 

I need to mount this inside a service with a stupid sc create but i couldn't find a way to launch it

any help please ?

Thanks a lot.

解决方案

Use Windows service wrapper. It's highly configurable and provides a lot of useful options, like log rotation, service account, on failure actions and so on. It even can automatically download resources from URL and place it locally as a file, so you can host your script somewhere and have it auto updated. Here is the basic steps to get your PowerShell service up and running:

  1. Download\build winsw. Version 1.x binaries can be found here. To build latest winsw 2.x use Visual Studio Community 2013 (free for open-source projects). More detailed build instructions are here.
  2. Create XML configuration file for your service. Example:

    <service>
        <id>MyPsSvc</id>
        <name>My PowerShell Service</name>
        <description>Does funny stuff with your PC</description>
        <executable>PowerShell.exe</executable>
        <logmode>reset</logmode>
        <arguments>-ExecutionPolicy Bypass -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -File "myscript.ps1" -var1 variable1 -var2 variable2</arguments>
    </service>
    

    The configuration file must have the same basename as winsw executable, i.e.:

    • winsw.exe
    • winsw.xml
  3. If you plan to use your service on the PC without internet connection, disable digital signature verification for winsw. To do this create file winsw.exe.config. Example:

    <configuration>
      <runtime>
        <generatePublisherEvidence enabled="false"/> 
      </runtime>
    </configuration>
    

  4. If you're running Windows Server 2012 or Windows 8 and and don't want to install .Net 2.0 support, specify .NET 4.0 runtime support in the abovementioned config file:

    <configuration>
        <runtime>
            <generatePublisherEvidence enabled="false"/> 
        </runtime>
        <startup>
            <supportedRuntime version="v2.0.50727" />
            <supportedRuntime version="v4.0" />
        </startup>
    </configuration>
    

  5. Install your service, running winsw.exe install from command line. Once the service is installed, you can start it from Windows service manager.

这篇关于在 Windows 服务中运行 powershell 脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆