Is it possible using the System.Windows.Forms.TextBox
(or any other method) to enter in text that can then be converted to securestring? I would like to be able to take a value entered, convert it to securestring and write that to a file which could then be called on if needed and the securestring converted back should we need to identify the value.
I've looked into something similar to this, but since I am using the TextBox forms, I don't want to rely on 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
Essentially, I want to have a text box use masked/password characters (which I can do with $TextBox.PasswordChar = "*"
and then take that input and dump it into a securestring text file. Then, I could use another script to call on that file and display the text in plain text for the end user should they need to know that current value.
Use a MaskedTextBox
instead of a regular TextBox
if you want to embed this in a custom GUI:
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]
and then convert the text to a secure string:
$secstr = $password.Text | ConvertTo-SecureString -AsPlaintText -Force
If you just want to prompt for credentials you could use Get-Credential
, which already stores the entered password as a secure string:
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