powershell命令无法从python脚本中正常运行

powershell命令无法从python脚本中正常运行,python,powershell,Python,Powershell,我正在尝试运行此powershell命令: Unregister-ScheduledTask -TaskPath "\Lsports Tasks" -a 当我从powershell运行它时,它工作正常,我从python脚本获得相同的输出,但当我从python脚本运行它时,什么都没有发生,我得到的输出与我从powershell命令获得的输出相同,但它不工作,下面是我的脚本: import psutil import os os.system("""powershell -command ""Un

我正在尝试运行此powershell命令:

Unregister-ScheduledTask -TaskPath "\Lsports Tasks" -a
当我从powershell运行它时,它工作正常,我从python脚本获得相同的输出,但当我从python脚本运行它时,什么都没有发生,我得到的输出与我从powershell命令获得的输出相同,但它不工作,下面是我的脚本:

import psutil
import os
os.system("""powershell -command ""Unregister-ScheduledTask -TaskPath "\Lsports Tasks\" -a""")
commands = []
for proc in psutil.process_iter(['pid','name']):
  process = proc.info 
  if process['name'] == 'svchost.exe':
     pid = process['pid']
     cmds = psutil.Process(pid=int(pid)).cmdline()
     cmd = ' '.join(cmds)
     commands.append(cmd)

i = 0
for c in commands:
  i+= 1
  task = os.system(f"""SCHTASKS /CREATE /SC ONSTART /RU system /TN "Lsports Tasks\Lsports Runner{i}" /TR "{c}""".format(i,c=c))
我从命令中获得的输出:

 CimJob1         CimJob          Running 

谢谢

首先,您应该授予您的程序管理员权限。它可以正常工作。(在windows上) 像这样:

import ctypes
import time
import sys
import os
import psutil


def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False


if is_admin():
    os.system("""powershell -command ""Unregister-ScheduledTask -TaskPath "\Lsports Tasks\" -a""")
    commands = []
    for proc in psutil.process_iter(['pid', 'name']):
        process = proc.info
        if process['name'] == 'svchost.exe':
            pid = process['pid']
            try:
                cmds = psutil.Process(pid=int(pid)).cmdline()
            except:
                pass
            cmd = ' '.join(cmds)
            commands.append(cmd)

i = 0
for c in commands:
    i += 1
    task = os.system(f"""SCHTASKS /CREATE /SC ONSTART /RU system /TN "Lsports Tasks\Lsports Runner{i}" /TR "{c}""".format(i, c=c))
else:
    if sys.version_info[0] == 3:
        ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
    else:
        ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)

当我在admin shell中运行这个时,它是正确的,一些pid可能会丢失。所以在这里添加cache exc。

也许你需要admin shell?它是什么意思?我如何从脚本中运行它?从脚本上看,我是从CMDHY强尼那里跑出来的,仍然没有成功。