Импорт значений из 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
     

    
}```

Ответы (0 шт):