如何在Django中发布Powershell输出?

时间:2019-02-14 21:34:57

标签: python django powershell

我目前正在从事一个小型Django项目。我已经写了一些powershell脚本例如获得活动目录用户并想要设置Django应用,该应用允许我发布Powershell脚本的输出

这是我的cmdlet和输出-

命令-

Get-OrgUser -eNumber 123456   

输出-

FullName               : Surname, Firstname
eNumber                : 123456
PasswordExpired        : False
LastBadPasswordAttempt : 10/01/2019 12:16:28
LastLogonDate          : 13/02/2019 12:59:58
LockedOut              : UnLocked
LockoutTime            : 0
PasswordLastSet        : 17/01/2019 11:52:49

我的Django应用应允许用户输入员工编号并显示从Powershell命令获取的结果。

1 个答案:

答案 0 :(得分:1)

n.b ..,不建议您尝试执行的操作,因为django服务器必须以具有特权的用户身份运行,以运行可以访问您的活动目录的命令。通常,由于某些用户可以使用您的Web服务器,因此您希望通过创建特定的应用程序用户来隔离它。也就是说,在django项目中准备好脚本后,就可以使用普通的python运行脚本并使用标准视图以django的形式返回结果:


def my_view(request):
    import subprocess
    handle = subprocess.Popen([
        'powershell.exe',
        'script.ps1',
    ], stdout=subprocess.PIPE)
    output = handle.stdout.read().decode('utf-8')
    return HttpResponse(output)    

无论如何,关于powershell的一般规则在这里适用。如果服务器设置了ExecutionPolicy,则必须对脚本进行签名,否则,您将必须更新服务器上的ExecutionPolicy才能运行未签名的脚本。正在运行django服务器的用户就是将要调用脚本的用户,并且应该具有执行脚本命令所需的权限。