在 Windows 服务中运行 powershell 脚本

2024-02-02

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

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

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

有什么帮助吗?

多谢。


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

  1. 下载\构建winsw.可以找到 1.x 版本的二进制文件here http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/。构建最新的温莎2.x https://github.com/kohsuke/winsw/tree/winsw-2.0 use Visual Studio 社区 2013 http://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx(对于开源项目免费)。更详细的构建说明是here https://github.com/kohsuke/winsw#build-environment.
  2. 为您的服务创建 XML 配置文件。例子:

    <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>
    

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

    • 执行程序
    • winsw.xml
  3. 如果您打算在没有互联网连接的电脑上使用您的服务,禁用 winsw 的数字签名验证 https://github.com/kohsuke/winsw/tree/winsw-2.0#offline-environment-and-authenticode。为此,创建文件winsw.exe.config。例子:

    <configuration>
      <runtime>
        <generatePublisherEvidence enabled="false"/> 
      </runtime>
    </configuration>
    
  4. 如果您运行的是 Windows Server 2012 或 Windows 8 并且不想安装 .Net 2.0 支持,指定 .NET 4.0 运行时支持 https://github.com/kohsuke/winsw/tree/winsw-2.0#net-runtime-40在上述配置文件中:

    <configuration>
        <runtime>
            <generatePublisherEvidence enabled="false"/> 
        </runtime>
        <startup>
            <supportedRuntime version="v2.0.50727" />
            <supportedRuntime version="v4.0" />
        </startup>
    </configuration>
    
  5. 安装你的服务,运行winsw.exe install从命令行。安装该服务后,您可以从 Windows 服务管理器启动它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 服务中运行 powershell 脚本 的相关文章

随机推荐

  • 验证模型属性 WCF Web APi

    我有一组使用 WCF Web Api 托管的服务 我需要做的是验证应用程序模型内的属性 例如 在 MVC 3 中 我像这样装饰模型中的属性 StringLength 30 public string UserName get set 然后在
  • 如何计算SQL中不同项目的数量

    数据库结构 Clubs ID ClubName Teams ID TeamName ClubID Players ID Name Registrations PlayerID TeamID Start date End date Seaso
  • 计算 GPU 上的彩色像素 - 理论

    我有一张 128 x 128 像素的图像 它被分解为 8 x 8 的网格 每个网格块包含 16 x 16 像素 要求 我想计算我的图像包含多少个黑色像素 直接的方法 I could通过逐行 逐列检查整个图像并检查像素是否为黑色来实现此目的
  • 如何编译 ast.Expr?

    import ast code 1 1 expr ast parse code body 0 print type expr compile ast Expression expr string eval gets me class ast
  • Rails + Amazon RDS:延迟问题

    我有一个应用程序 其数据库正在迁移到亚马逊RDS 由于 RDS 和我们的服务器之间的查询延迟 例如仅由于查询而导致加载时间长达 30 秒 我的性能显着下降 没有显式缓存 并且请求可以进一步优化 但这仍然比本地数据库慢 10 倍以上 这种业绩
  • 使用 gorilla/mux URL 参数的函数的单元测试

    TLDR gorilla mux 过去不提供设置 URL 变量的可能性 现在确实如此 这就是为什么第二高得票数的答案在很长一段时间内都是正确的答案 原始问题如下 这就是我想做的 main go package main import fmt
  • html - 像链接一样的表格行

    我无法将表格行设置为某些内容的链接 我只能使用 css 和 html 我尝试了从 div in row 到其他东西的不同操作 但仍然无法使其工作 您有两种方法可以做到这一点 使用 JavaScript tr 使用锚点 tr td a hre
  • C++ 中线程的简单示例

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 有人可以发布一个在 C 中启动两个 面向对象 线程的简单示例吗 我正在寻找实际的 C 线
  • 如何为tomcat maven插件添加存储库

    如何包含找到的 tomcat maven 插件的存储库here http tomcat apache org maven plugin 2 0 SNAPSHOT source repository html 我在中央 Maven 存储库中找
  • 将 JSON 反序列化为 Java 枚举

    我在 Android 上的 Java 中有以下枚举 我希望能够将传入的 JSON 字符串 对象中的整数反序列化为该枚举类型 我在 Jackson 和 GSON 上受到了关注 但在我正在使用的 JSON org 包上没有得到任何关注 有没有简
  • FParsec 在可选解析器上失败

    我目前正在学习 FParsec 库 但遇到了一个问题 当我想解析一个可选字符串并随后继续正常解析时 FParsec 将在可选解析器上返回致命错误 而不是返回None正如我所期望的 下面的工作代码示例说明了我的观点 open System o
  • Apache Beam:如何同时创建许多经历相同 PTransform 的 PCollection?

    提前致谢 问题 我在谷歌云上有很多文件 对于每个文件我都必须 获取文件 对每个文件进行一系列 Google Cloud Storage API 调用以对其进行索引 例如 name blob name size blob size unzip
  • Ant 构建失败,没有可见错误

    编辑 我最终在 Eclipse 中设置了整个项目并能够构建它 我不确定为什么会出现这个问题 希望我永远不需要找出答案 我遇到一个问题 我的构建报告 构建失败 但没有报告任何错误 我正在构建一个包含大量旧代码的大型应用程序 现在我很乐意修改这
  • select * 的使用是否合理?

    我一直向我的开发人员宣讲SELECT 是邪恶的 应该像瘟疫一样避免 有没有什么情况可以证明它是合理的 我不是在谈论COUNT 大多数优化器都能弄清楚 Edit 我说的是生产代码 我看到的关于这种不良做法的一个很好的例子是一个遗留的 asp
  • 我们可以通过jmeter.bat和ApacheJMeter.jar打开JMeter。有什么不同?

    我们可以通过以下方式打开JMeterjmeter bat and ApacheJMeter jar 它们之间有什么区别 ApacheJMeter jar 文件是一个可执行 jar 因此如果它与 java 应用程序关联 则可以通过在 wind
  • 当组合框获得焦点时展开组合框及其项目

    每当组合框获得焦点时 我想扩展组合框的高度 我使用以下代码来扩展组合框的高度
  • 如何在Windows上安装PyQt5?

    当我尝试使用命令在 Windows 上安装 PyQt5 时 python configure py 我收到此错误 Error Make sure you have a working Qt qmake on your PATH 我从 得到了
  • 如何使用volley库解析android中的嵌套json数组

    我以下面的格式嵌套了 json 数组 我正在使用 volley 库进行 JSON 解析 City name Mumbai Mumbai area andheri diler DName yuvraj area jogeshwari area
  • 找不到适合我的班级的编解码器

    我有一个名为 Signal 的简单类 类如下所示 public class Signal private String id private Date timestamp public String getId return id publ
  • 在 Windows 服务中运行 powershell 脚本

    我有一个运行良好的 powershell 脚本 我在 power shelle 命令行中调用此脚本 PS C gt myscript ps1 var1 variable1 var2 variable2 我需要使用愚蠢的 sc create