Powershell 文本框 SecureString
Powershell TextBox SecureString
是否可以使用 System.Windows.Forms.TextBox
(或任何其他方法)输入随后可以转换为安全字符串的文本?我希望能够获取输入的值,将其转换为安全字符串并将其写入一个文件,然后可以在需要时调用该文件,如果我们需要识别该值,则安全字符串会转换回来。
我已经研究过类似的东西,但由于我使用的是 TextBox 表单,所以我不想依赖 Read-Host
$secstr = Read-Host -AsSecureString "Enter your text"
$secstr | ConvertFrom-SecureString | out-file C:\temp\test.txt
$secstr = get-content c:\temp\test.txt | ConvertTo-SecureString -AsPlaintText -Force
本质上,我想让一个文本框使用 masked/password 个字符(我可以用 $TextBox.PasswordChar = "*"
来做,然后获取该输入并将其转储到一个安全字符串文本文件中。然后,我可以使用另一个脚本调用该文件,并在最终用户需要知道当前值时以纯文本显示文本。
如果您想将其嵌入自定义 GUI,请使用 MaskedTextBox
而不是常规 TextBox
:
Add-Type -Assembly 'System.Windows.Forms'
$form = New-Object Windows.Forms.Form
$password = New-Object Windows.Forms.MaskedTextBox
$password.PasswordChar = '*'
$password.Top = 100
$password.Left = 80
$form.Controls.Add($password)
$form.ShowDialog()
[source]
然后将文本转换为安全字符串:
$secstr = $password.Text | ConvertTo-SecureString -AsPlaintText -Force
如果您只想提示输入凭据,您可以使用 Get-Credential
,它已将输入的密码存储为安全字符串:
PS C:\> $cred = Get-Credential
Cmdlet Get-Credential an der Befehlspipelineposition 1
Geben Sie Werte für die folgenden Parameter an:
Credential
PS C:\> $cred.Password
System.Security.SecureString
另一种方法是使用纯文本框,正如 Ansgar 提到的那样,使用 PasswordChar 属性:
$textbox = New-Object System.Windows.Forms.Textbox
$textbox.Size = '75,23'
$textbox.PasswordChar = '*'
$form.Controls.Add($textbox)
是否可以使用 System.Windows.Forms.TextBox
(或任何其他方法)输入随后可以转换为安全字符串的文本?我希望能够获取输入的值,将其转换为安全字符串并将其写入一个文件,然后可以在需要时调用该文件,如果我们需要识别该值,则安全字符串会转换回来。
我已经研究过类似的东西,但由于我使用的是 TextBox 表单,所以我不想依赖 Read-Host
$secstr = Read-Host -AsSecureString "Enter your text"
$secstr | ConvertFrom-SecureString | out-file C:\temp\test.txt
$secstr = get-content c:\temp\test.txt | ConvertTo-SecureString -AsPlaintText -Force
本质上,我想让一个文本框使用 masked/password 个字符(我可以用 $TextBox.PasswordChar = "*"
来做,然后获取该输入并将其转储到一个安全字符串文本文件中。然后,我可以使用另一个脚本调用该文件,并在最终用户需要知道当前值时以纯文本显示文本。
如果您想将其嵌入自定义 GUI,请使用 MaskedTextBox
而不是常规 TextBox
:
Add-Type -Assembly 'System.Windows.Forms'
$form = New-Object Windows.Forms.Form
$password = New-Object Windows.Forms.MaskedTextBox
$password.PasswordChar = '*'
$password.Top = 100
$password.Left = 80
$form.Controls.Add($password)
$form.ShowDialog()
[source]
然后将文本转换为安全字符串:
$secstr = $password.Text | ConvertTo-SecureString -AsPlaintText -Force
如果您只想提示输入凭据,您可以使用 Get-Credential
,它已将输入的密码存储为安全字符串:
PS C:\> $cred = Get-Credential Cmdlet Get-Credential an der Befehlspipelineposition 1 Geben Sie Werte für die folgenden Parameter an: Credential PS C:\> $cred.Password System.Security.SecureString
另一种方法是使用纯文本框,正如 Ansgar 提到的那样,使用 PasswordChar 属性:
$textbox = New-Object System.Windows.Forms.Textbox
$textbox.Size = '75,23'
$textbox.PasswordChar = '*'
$form.Controls.Add($textbox)