我正在编写一个脚本,用于连接到 SOAP 服务。建立连接后,我需要在我发送的每个命令中传递用户名/密码。我遇到的问题是,当我使用 read-host 执行此操作时,我的密码以明文形式显示并保留在 shell 中:
PS C:\Users\Egr> Read-Host "Enter Pass"
Enter Pass: MyPassword
MyPassword
如果我用 -AsSecureString 隐藏它,该值将无法再传递给服务,因为它现在是一个 System.Security.SecureString 对象:
PS C:\Users\gross> Read-Host "Enter Pass" -AsSecureString
Enter Pass: **********
System.Security.SecureString
当我通过这个时,它不起作用。我不关心以明文形式传递给服务的密码,我只是不希望它们在输入密码后留在用户的 shell 上。是否可以隐藏读取主机输入,但仍将密码存储为明文?如果没有,有没有办法将 System.Security.SecureString 对象作为明文传递?
谢谢
最佳答案
$Password 是一个安全字符串,这将返回纯文本密码。
[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password))
关于powershell - 如何使用 powershell 的 read-host 功能接受外部服务的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15007104/