$cred = Get-Credential without asking for prompts in powershell

New Contributor

I am trying to run a script and i wanted to run it silently without asking for credential prompts.

Is there a way to get around using "$cred = Get-Credential" without a prompt 


The script i am trying to use is 

# Connect to Office 365 

$username = ""
$password = ConvertTo-SecureString "mypassword" -AsPlainText -Force
#$secureStringPwd = $password | ConvertTo-SecureString -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential -ArgumentList ($user, $password)

Import-Module MSOnline 
$cred = Get-Credential 
Connect-MSolService -credential $cred 
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri -Credential $cred -Authentication Basic -AllowRedirection 
Import-PSSession $Session -AllowClobber -DisableNameChecking 



10 Replies
You can store passwords in an encrypted file on the machine you are running the script on. Here is a site that gives some examples -

You can also leverage windows credential manager to store credentials and retrieve the crowds from there in your script -


using windows credential manager, create your credential and give it a name


Then, in PowerShell, Wherever you use 

$cred = Get-Credential

which prompts you, replace that with

$cred =$(Get-StoredCredential -Target thenameyoustoredyourcredentialunder)


You’ll need to install-module CredentialManager

best response confirmed by TejCGS (New Contributor)



I have corrected your script (removed the unwanted call of Get-Credential and fixed the variable name creds)


$username = ""
$password = ConvertTo-SecureString "mypassword" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential -ArgumentList ($username, $password)
Import-Module MSOnline
Connect-MSolService -Credential $psCred
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri -Credential $psCred -Authentication Basic -AllowRedirection
Import-PSSession $Session -AllowClobber -DisableNameChecking


i stored my credentials in credentials manager as CGSPS1 and i tried retrieving them in ps1
$psCred = Get-StoredCredential -Target "CGSPS1" –AsCredentialObject

$CRED = Get-StoredCredential -Target "CGSPS1" –AsCredentialObject
Connect-MSolService -Credential $CRED
and i get the below error

Connect-MsolService : Cannot bind parameter 'Credential'. Cannot convert the "PSCredentialManager.Common.Credential" value of t
"PSCredentialManager.Common.Credential" to type "System.Management.Automation.PSCredential".
At line:1 char:33
+ Connect-MSolService -Credential $cred

@TejCGS Try it without the –AsCredentialObject  ? Does that make any difference? Also, I surrounded the expression with $() to force PowerShell to interpret it.



I have corrected your script :


$psCred = Get-StoredCredential -Target "CGSPS1"
Connect-MSolService -Credential $psCred



@Kevin MorganDid it ask you for login again at Connect-MSolService -Credential $psCred, for me its asking to login again, how do i avoid prompt as i am already passing cred


@Kevin Morgan Thanks so much for your answer.  Saved me a lot of time wading through useless information!

@Ben Stegink 


With all due respect.  Its not a question on best practice.   I myself needed this for development stuff, a zone where I disable all security so that it is never in the way.