How to automate Powershell's interactive Get-Credential method? I am trying to write a python script which automates the powershell's Get-Credential method. Here is something i wrote:

import subprocess
COMMAND_LINE = 'powershell'
powershell = subprocess.Popen(COMMAND_LINE, shell=True,
                                   stdin=subprocess.PIPE,
                                   stderr=subprocess.STDOUT,
                                   stdout=subprocess.PIPE)
output = powershell.stdout.readline()
print output.rstrip()
powershell.stdin.write('$cred = Get-Credential\n')
powershell.stdin.write('Administrator\n')
powershell.stdin.write('Password')
output = powershell.stdout.readline()
print output.rstrip()
out = powershell.communicate()[0]
print(out)


But i am unable to pass the password as above, i am getting following exception:

&gt; PS /root&gt; $cred = Get-Credential
&gt; 
&gt; Windows PowerShell credential request Enter your credentials. User:
&gt; Administrator Password for user Administrator: PS /root&gt;
&gt; PasswordPassword : The term 'Password' is not recognized as the name
&gt; of a cmdlet, function, script file, or operable program. Check the
&gt; spelling of the name, or if a path was included, verify that the path
&gt; is correct and try again. At line:1 char:1
&gt; + Password
&gt; + ~~~~~~~~
&gt;     + CategoryInfo          : ObjectNotFound: (Password:String) [], CommandNot    FoundException
&gt;     + FullyQualifiedErrorId : CommandNotFoundException


As i am new to python, Can anyone help me here?
Your python problem is the \n after the commands, write already append a newline, so your script does the following:

$cred = Get-Credential # Start the command
# This line is ignored as extraneous after Get-Credential, but you can see it in your output.
Administrator # Send proprely to the User: prompt
# Sent to the Password: prompt
Password # Send to the shell input, causing the error at end of your log.


Now that's a quite hard way to automate the credential object in powershell, usually the object is build by other way like described in this blog post (quoting here for completeness):

$password = "mypassword" | ConvertTo-SecureString -asPlainText -Force
$username = "nwtraders\administrator" 
$credential = New-ObjectSystem.Management.Automation.PSCredential($username,$password)


And used as such:

Get-WMIObject win32_logicaldisk -ComputerName Server1 -Credential $credential