python - 在启动时从 powershell 脚本作为 Windows 服务运行 python 代码
问题描述
我想在每次计算机启动时运行一个 python 脚本,而不必登录。
为此,我尝试创建一个 Windows 服务,该服务将首先运行一个 powershell 脚本(进行一些基本的检查配置),然后运行一个简单的 python 命令行,如下所示:
python ./app.py
但就像我说的,我希望这个脚本在启动时运行,为此我创建了一个 Windows 服务。问题是即使 powershell 脚本运行,python 命令(并且只有这个命令)也不起作用。
一些有用的信息
如果我从终端启动 powershell 脚本:它可以工作。
如果我直接从终端启动 python 脚本:它可以工作。
如果我将 python 脚本作为后台进程启动pythonw
:它可以工作。
我知道 powershell 脚本在启动时运行,因为我要求他创建文件夹(作为测试)以向我展示它的工作原理。
python 程序使用多线程和网络连接。我不知道这是否相关,但这只是说它是一个非常大的程序,不需要任何人工交互并且可以自行运行。也许 Windows 阻止了这方面的事情?
其他信息:powershell 脚本(以及 python 脚本)都需要以管理员身份运行。我知道它已经这样做了,因为在以下条件下它会创建一个文件夹。
if (([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
mkdir C:\Users\Desktop\Test2
}
我试过的
我首先在C#中创建了一个 Windows 服务,它使用以下基本代码以完全权限运行:
var ps1File = @"C:\\path\\to\\powershell\\script\\start.ps1";
var startInfo = new ProcessStartInfo()
{
FileName = "powershell.exe",
Arguments = $"-NoProfile -NoExit -ExecutionPolicy unrestricted -file \"{ps1File}\"",
UseShellExecute = true
};
Process.Start(startInfo);
该服务似乎确实像我说的那样工作,它确实是 python 命令不会。
我还尝试使用NSSM和AlwaysUp创建服务,但没有任何效果。
解决方案
推荐阅读
- python - 为什么我无法使用 netmiko 连接到 linux 计算机?
- php - 如何在 laravel eloquent 中放置 row_number 表达式
- python - 如何根据索引合并两个 numpy 数据集?
- python - 以一组元组为值的字典理解
- python - 从python中的多个链接下载并将其存储在多个列表中
- c# - 如何等待表为空/消息队列已处理?
- c - strsep() 导致段错误 - 为什么?
- java - 将鼠标悬停在其方法和类上时如何显示导入库的 Javadoc?
- python - 如何使用条件从多维 numpy 数组中删除子数组?
- python - 用rabbitmq在数据库上写