当你在运行命令时, 有几个PowerShell和Exchange PowerShell命令能够提供一些凭据参数,允许你使用替代组凭据.当你使用手动远程Shell连接,发送邮件,以及工作在cross-forest中.在这一节,我们将学习下如何创建一个凭据对象,可以使用支持凭据参数的命令-credential
凭据工作原理
你可以使用Get-Credential命令去创建一个凭据.在下面的示例中,我们把凭据对象存储在变量中,而这个变量可以被Get-Mailbox命令使用
$credential = Get-Credential
Get-Mailbox -Credential $credential
当你运行Get-Credential命令时,会弹出一个框要求输入用户名和密码,在前面的示例中已经演示过了.在输入胡名和密码验证框后,这个凭据就被存储在变量中,然后可以命令使用-Credential参数被其它命令调用.然后命令会使用指定的凭据运行.
提供凭据命令不一定是一个互动的过程,你也可以使用编程的方式创建一个凭据对象,而不使用Get-Credential命令:
$user = "robin\administrator"
$pass = ConvertTo-SecureString -AsPlainText P@ssw0rd01 -Force
$credential = New-Object System.Management.Automation.PSCredential `
-ArgumentList $user,$pass
我们应该注意到,在上面的示例中,我们使用了ConvertTo-SecureString命令去创建一个安全的字符串对象,然后使用New-Object去创建一个凭据对象.
如果你需要提示用户的凭据,但是你不想调用Windows身份认证对话框,你可以使用替代语法在Shell中提示用
户凭据.
$user = Read-Host "Please enter your username"
$pass = Read-Host "Please enter your password" -AsSecureString
$credential = New-Object System.Management.Automation.PSCredential `
-ArgumentList $user,$pass
在这个语法中使用了Read-Host命令来提示用户输入用户名和密码.注意:当创建$pass对象时我们使用Read-Host �CAsSecureString参数,来确保对象存储在一个安全的字符串中.创建完凭据后,我么可以通过如下命令来查看:
在这里我们可以看到,我们可以获取存储在对象中的凭据的UserNameproperty对象.因为密码属性作为一个安全的字符储存,我们需要使用GetNetworkCredential方法将凭据NetworkCredential对象转为一个简单的字符串.
本文出自 “Robin's Home” 博客,谢绝转载!