在Powershell中隐藏SQL用户的密码

时间:2015-11-19 09:45:32

标签: sql powershell passwords parameter-passing credentials

我使用以下脚本在命令行传递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块,我之后插入它没有效果。

如果用户在提示符处插入密码,我该如何屏蔽密码?

1 个答案:

答案 0 :(得分:1)

对于PS V3,转换为securestring即[securestring]$password=""就足够了。 在使用应用程序之前,您必须将此securestring转换回纯文本。这可以通过以下方式完成:

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