2015-01-21 2 views
0

Возможно ли с помощью System.Windows.Forms.TextBox (или любого другого метода) ввести текст, который затем можно преобразовать в securestring? Я хотел бы иметь возможность ввести введенное значение, преобразовать его в securestring и записать его в файл, который затем может быть вызван, если необходимо, и securestring, преобразованный обратно, нам нужно определить значение.Powershell TextBox SecureString

Я посмотрел на что-то похожее на это, но так как я использую форму 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 

По сути, я хочу, чтобы текстовое поле используйте маскированные/парольные символы (что я могу сделать с $TextBox.PasswordChar = "*", а затем взять этот ввод и выгрузить его в текстовый файл securestring. Затем я мог бы использовать другой скрипт для вызова этого файла и отображения текста в текстовом виде для конечного пользователя они должны знать, что текущее значение.

ответ

0

Использовать 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
0

Дополнительным способом является использование обычного текстового поля, и, как упоминалось в Ansgar, используйте атрибут PasswordChar:

$textbox = New-Object System.Windows.Forms.Textbox 
$textbox.Size = '75,23' 
$textbox.PasswordChar = '*' 
$form.Controls.Add($textbox) 
Смежные вопросы