一个证书对象包涵一个用户名及密码,你能使用Get-Credential创建它然后在有-Credential的命令中后当参数用。
但是我们想在执行过程中忽略掉用户密码提示干预,你可能不想凭证窗口弹出来,并且不想把用户密码密码信息存储在脚本里。
请看这个解决,使用函数 Export-Credential 将证书保存到文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function Export-Credential
{
param
(
[ Parameter ( Mandatory = $true )]
$Path ,
[System.Management.Automation.Credential()]
[ Parameter ( Mandatory = $true )]
$Credential
)
$CredentialCopy = $Credential | Select-Object *
$CredentialCopy .Password = $CredentialCopy .Password | ConvertFrom-SecureString
$CredentialCopy | Export-Clixml $Path
}
|
将证书信息保存到一个文件:
1 | Export-Credential -Path c:\mycred -Credential administrator
|
当你使用时,弹出凭证窗口提示你输入安全密码,凭证结果将会已XML形式保存并且密码被加密。
现在当你需要凭证时,使用 Import-Credential从该文件获得:
1 2 3 4 5 6 7 8 9 10 11 12 | function Import-Credential
{
param
(
[ Parameter ( Mandatory = $true )]
$Path
)
$CredentialCopy = Import-Clixml $path
$CredentialCopy .password = $CredentialCopy .Password | ConvertTo-SecureString
New-Object system.Management.Automation.PSCredential( $CredentialCopy .username, $CredentialCopy .password)
}
|
请尝试这样使用:
1 2 | $cred = Import-Credential -Path c:\mycred
Start-Process -FilePath "c:\xx.exe" -Credential $cred
|
|