У меня есть строка. Иногда это выглядит так:
9xABp '} H9 $ G (@
А иногда это выглядит так:
9xABp "} H9 $ G (@
Я не могу контролировать набор символов, используемый для генерации строки, но мне нужно, чтобы Powershell перестал жаловаться на невозможность синтаксического анализа строки и выдал мне все символы.
$string = '9xABp'}H9$G(@'
$secure = ConvertTo-SecureString -String $string -AsPlainText -Force
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secure)
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
Это не работает, поэтому я попытался заключить строку в двойные кавычки, а не в одинарные.
$string = "9xABp'}H9$G(@"
$secure = ConvertTo-SecureString -String $string -AsPlainText -Force
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secure)
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
Это нормально, но $ G не включен (заменен backsla sh), и что делать, если в моей строке есть двойные кавычки внутри?
Я пробовал использовать [Regex] :: Escape ().
$string = "9xABp'}H9$G(@"
$secure = ConvertTo-SecureString -String ([Regex]::Escape($string)) -AsPlainText -Force
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secure)
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
Но $ G по-прежнему отсутствует. Еще одна попытка, на этот раз с двойными и одинарными кавычками снаружи.
$string = "'9xABp'}H9$G(@'"
$secure = ConvertTo-SecureString -String ([Regex]::Escape($string)) -AsPlainText -Force
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secure)
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
Что я могу здесь сделать?