2017-09-20 2 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を取得する:あなたは、コマンド文字列にパスワードをフォーマットする必要が

+0

あなたはsubprocess.call方法でパスワードの変数を含めるようにコマンドをフォーマットする必要があります。 – Kyle

+0

PowerShellコマンドにパスワードを含めることは可能ですか? – Prox

+0

subprocess.callの場合は、コマンドを構成する文字列のリストを渡すだけです。 str.format()メソッドを使用してコマンドを作成することをお勧めします。 – Kyle

答えて

0

オブジェクトが属性 '形式' を持っていない 'のinit'。セキュリティ上の問題を引き起こす可能性があるため、パスワードを指定してコマンドを生成する前にパスワードを守るようにしてください。あなたはカップルの異なる方法を試すことができますコマンドをフォーマットするため

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'オブジェクトには属性 'format'がありません – Prox

関連する問題