Импорт значений из txt файла в переменную дословно (без интерпретации спецсимволов)
Набросал тут черновик скрипта (первый раз делаю что-то подобное). Задача - графический интерфейс редактирования .txt файла, сейчас пока здесь просто импорт строк, но потом думаю добавить больше автоматики и кнопок.
Вопрос в следующем, исходный файл может содержать в своих строка зарезервированные символы. Хотелось бы импортировать их в переменную как простой текст, без интерпретации.
[regex]::escape конечно, работает, но при этом добавляет в значения символы исключения \
Уже обгуглился по самое не балуйся, может тут подскажут=)
Заранее спасибо.
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Wow, such auto'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Введите логин:'
$form.Controls.Add($label)
$textBox = New-Object System.Windows.Forms.TextBox #форма ввода
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)
$form.Topmost = $true
$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
[string]$x =$textBox.Text + ".txt" #Добавили переменной расширение и преобразовали её в текст
cd c:/scr #Смена директории
$Loginstr=(Get-Content $x -TotalCount 2)[-1]
$Passwordstr=(Get-Content $x -TotalCount 3)[-1]
$OTPstr=(Get-Content $x -TotalCount 4)[-1] #Выбор строки в файле (запрос на N строк, импорт последней)
$GAUTHstr=(Get-Content $x -TotalCount 5)[-1]
$YubiPinstr=(Get-Content $x -TotalCount 6)[-1]
$YubiPukstr=(Get-Content $x -TotalCount 7)[-1]
$localpasswordstr=(Get-Content $x -TotalCount 8)[-1]
$OSstr=(Get-Content $x -TotalCount 9)[-1]
$Loginstr=[regex]::escape($Loginstr)
$Passwordstr=[regex]::escape($Passwordstr)
$OTPstr=[regex]::escape($OTPstr)
$GAUTHstr=[regex]::escape($GAUTHstr)
$YubiPinstr=[regex]::escape($YubiPinstr)
$YubiPukstr=[regex]::escape($YubiPukstr)
$localpasswordstr=[regex]::escape($localpasswordstr)
$OSstr=[regex]::escape($OSstr) #Ну почти
$form2 = New-Object System.Windows.Forms.Form
$form2.Text = 'Содержимое файла'
$form2.Size = New-Object System.Drawing.Size(300,400)
$form2.StartPosition = 'CenterScreen'
$textBox0 = New-Object System.Windows.Forms.TextBox
$textBox0.Location = New-Object System.Drawing.Point(10,40)
$textBox0.Size = New-Object System.Drawing.Size(260,20)
$textBox0.Text = $Loginstr
$form2.Controls.Add($textBox0)
$textBox1= New-Object System.Windows.Forms.TextBox
$textBox1.Location = New-Object System.Drawing.Point(10,70)
$textBox1.Size = New-Object System.Drawing.Size(260,20)
$textBox1.Text = $Passwordstr
$form2.Controls.Add($textBox1)
$textBox2 = New-Object System.Windows.Forms.TextBox
$textBox2.Location = New-Object System.Drawing.Point(10,100)
$textBox2.Size = New-Object System.Drawing.Size(260,20)
$textBox2.Text = $OTPstr
$form2.Controls.Add($textBox2)
$textBox3 = New-Object System.Windows.Forms.TextBox
$textBox3.Location = New-Object System.Drawing.Point(10,130)
$textBox3.Size = New-Object System.Drawing.Size(260,20)
$textBox3.Text = $GAUTHstr
$form2.Controls.Add($textBox3)
$textBox4 = New-Object System.Windows.Forms.TextBox
$textBox4.Location = New-Object System.Drawing.Point(10,160)
$textBox4.Size = New-Object System.Drawing.Size(260,20)
$textBox4.Text = $YubiPinstr
$form2.Controls.Add($textBox4)
$textBox5 = New-Object System.Windows.Forms.TextBox
$textBox5.Location = New-Object System.Drawing.Point(10,190)
$textBox5.Size = New-Object System.Drawing.Size(260,20)
$textBox5.Text = $YubiPukstr
$form2.Controls.Add($textBox5)
$textBox6 = New-Object System.Windows.Forms.TextBox
$textBox6.Location = New-Object System.Drawing.Point(10,220)
$textBox6.Size = New-Object System.Drawing.Size(260,20)
$textBox6.Text = $localpasswordstr
$form2.Controls.Add($textBox6)
$textBox7 = New-Object System.Windows.Forms.TextBox
$textBox7.Location = New-Object System.Drawing.Point(10,250)
$textBox7.Size = New-Object System.Drawing.Size(260,20)
$textBox7.Text = $OSstr
$form2.Controls.Add($textBox7)
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,300)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form2.AcceptButton = $okButton
$form2.Controls.Add($okButton)
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,300)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form2.CancelButton = $cancelButton
$form2.Controls.Add($cancelButton)
$form2.Topmost = $true
$form2.Add_Shown({$textBox2.Select()})
$result2 = $form2.ShowDialog()
#назначение переменных к строкам
$OTPstrnew=$textBox2.Text
$GAUTHstrnew=$textBox3.Text
$YubiPinstrnew=$textBox4.Text
$YubiPukstrnew=$textBox5.Text
$localpasswordstrnew=$textBox6.Text
$OSstrnew=$textBox7.Text
#замена строки в файле на значение из поля ввода
(Get-Content -Path $x) -replace "$OTPstr","$OTPstrnew" |Set-Content $x
(Get-Content -Path $x) -replace "$GAUTHstr","$GAUTHstrnew" |Set-Content $x
(Get-Content -Path $x) -replace "$YubiPinstr","$YubiPinstrnew" |Set-Content $x
(Get-Content -Path $x) -replace "$YubiPukstr","$YubiPukstrnew" |Set-Content $x
(Get-Content -Path $x) -replace "$localpasswordstr","$localpasswordstrnew" |Set-Content $x
(Get-Content -Path $x) -replace "$OSstr","$OSstrnew" |Set-Content $x
type $x
}```