在 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)
我正在使用以下脚本在命令行传递 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)