snippetpythonMinor
How to automate Powershell's interactive Get-Credential method?
Viewed 0 times
interactivemethodcredentialpowershellautomategethow
Problem
I am trying to write a python script which automates the powershell's Get-Credential method. Here is something i wrote:
But i am unable to pass the password as above, i am getting following exception:
As i am new to python, Can anyone help me here?
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:
> PS /root> $cred = Get-Credential
>
> Windows PowerShell credential request Enter your credentials. User:
> Administrator Password for user Administrator: PS /root>
> PasswordPassword : The term 'Password' is not recognized as the name
> of a cmdlet, function, script file, or operable program. Check the
> spelling of the name, or if a path was included, verify that the path
> is correct and try again. At line:1 char:1
> + Password
> + ~~~~~~~~
> + CategoryInfo : ObjectNotFound: (Password:String) [], CommandNot FoundException
> + FullyQualifiedErrorId : CommandNotFoundExceptionAs i am new to python, Can anyone help me here?
Solution
Your python problem is the
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):
And used as such:
\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 $credentialCode Snippets
$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.$password = "mypassword" | ConvertTo-SecureString -asPlainText -Force
$username = "nwtraders\administrator"
$credential = New-ObjectSystem.Management.Automation.PSCredential($username,$password)Get-WMIObject win32_logicaldisk -ComputerName Server1 -Credential $credentialContext
StackExchange DevOps Q#1575, answer score: 5
Revisions (0)
No revisions yet.