如何提示用户输入密码并使用该输入更改Windows密码?

时间:2017-09-20 18:53:41

标签: python powershell

我有一个连接到服务器程序的Python客户端程序。 在客户端程序中,我想提示用户输入他们的Windows用户名,然后要求他们输入新密码。

我要将用户名和密码发送到服务器程序并运行PowerShell命令来更改密码。

有没有办法可以在下面的程序中从用户那里获取密码并使用该输入为Powershell提供新密码?

目前它不会对给出的密码做任何事情。用户必须再输入2次密码。我只想获取提供的原始密码并使用它来提供给PowerShell。

import subprocess

user = input('Enter Windows Username: ')
password = input('Enter New Password: ')

subprocess.call(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", "Set-ADAccountPassword " + user + " -NewPassword $newpwd –Reset"])

更新

import subprocess

user = input('Enter Windows Username: ')
password = input('Enter New Password: ')

command = subprocess.call(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", "Set-ADAccountPassword " + user + " -NewPassword {0} –Reset"])
formatted_command = command.format(password)

print(formatted_command)

我得到错误AttributeError:'init'对象没有属性'format'

2 个答案:

答案 0 :(得分:0)

您需要将密码格式化为命令字符串。警告,您应该在使用密码生成命令之前清理密码,因为它可能会导致安全问题。

command = "This is my cool command with a parameter included: {0}"
password = "super_secret_password"

formatted_command = command.format(password)

print(formatted_command)

要格式化命令,您可以尝试几种不同的方法......

command = subprocess.call([
    "C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe",
    "Set-ADAccountPassword {0}".format(user),
    "-NewPassword {0}".format(password),
    "–Reset"
])

# OR

command = subprocess.call([
    "C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe",
    "Set-ADAccountPassword",
    user,
    "-NewPassword",
    password,
    "–Reset"
])

答案 1 :(得分:0)

也许试试这个:

import os

user = input('Enter Windows Username: ')
password = input('Enter New Password: ')

os.system("net user " + user + " " + password)

os.system("net user " + user + " " + password)意味着:
“net user Prox new_password”

使用此命令,您可以直接更改用户的密码 使用CMD(Windows命令行)

要成功运行此命令,请以管理员身份运行该文件