2017-09-20 95 views
-2

我有一個連接到服務器程序的Python客戶端程序。 在客戶端程序中,我想提示用戶輸入他們的Windows用戶名,然後要求他們輸入新密碼。如何提示用戶輸入密碼並使用該輸入來更改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' 的對象有沒有屬性 '格式'

+0

您需要格式化您的命令,包括在subprocess.call方法您的密碼變量。 – Kyle

+0

可以在PowerShell命令中包含密碼嗎? – Prox

+0

對於subprocess.call,您只需傳遞組成您的命令的字符串列表。我會建議使用str.format()方法來構建一個命令。 – Kyle

回答

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" 
]) 
+0

我添加了我現在正在上面嘗試的內容。我得到一個AttributeError:'init'對象沒有屬性'格式' – Prox

相關問題