powershell - 如何使用 powershell 的 read-host 功能接受外部服务的密码?

标签 powershell powershell-2.0 user-input securestring

我正在编写一个脚本,用于连接到 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/

相关文章:

web-services - 在PowerShell中与[ref]一起使用的参数未填写

ruby-on-rails - 在 Windows 7 上的 powershell 中运行后台进程(尤其是 Rails)

java - 如何在 Web 应用程序中最好地实现用户可选变量

c# - C# 中的 JOptionPane 等价物?

powershell - 发送请求时在 PowerShell 中使用括号

windows - 将位置更改为快捷方式位置

powershell - aws-cli (powershell) import-image 缺少必需参数 disk-images

powershell - 为什么我的 PowerShell 函数的参数显示为空/空白?

c - 为什么以下代码不允许我使用fgets获得用户输入,但不能使用scanf?

asp.net - 使用 powershell 将 .NET Framework 从 4.5 升级到 4.6