在 Powershell 中隐藏 SQL 用户的密码

Hiding password for SQL user in Powershell

我正在使用以下脚本在命令行传递 SQL 凭据,但我需要用户输入 SQL 用户的密码,而不是其中的 Windows 凭据并确保密码在提示中插入时不会以明文形式显示。这是我的脚本:

Param(
  [Parameter(Mandatory=$True)]
  [ValidateNotNullOrEmpty()]
  [string]$dbusername="",
  [Parameter(Mandatory=$True)]
  [ValidateNotNullOrEmpty()]
  [string]$password="",
  [Parameter(Mandatory=$True)]
  [ValidateNotNullOrEmpty()]
  [string]$Machine=""
  )

这很好用,但我想确保当用户在提示中输入密码时隐藏密码。

我已经用这条线做了

Read-Host -Prompt "Enter your password" -AsSecureString

但是这个不能插入到Param块中,我插入之后没有效果。

当用户在提示时输入密码时,如何屏蔽密码?

对于 PS V3,转换为安全字符串即:[securestring]$password="" 应该足够了。 在将其用于您的应用程序之前,您肯定必须将此安全字符串转换回纯文本。这可以通过以下方式完成:

$Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($password)
$clearpassword = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($Ptr)
[System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($Ptr)