Powershell — одиночная кавычка в строковой переменной с XPath
Уважаемые коллеги Powershell!
у меня (может быть) очень простая проблема, но я понятия не имею, как ее решить. Я хочу использовать строковую переменную, содержащую одинарную кавычку, в нотации XPath. Я использую CMDlet Select-Xml. Если в строке нет одинарной кавычки, Select-Xml работает нормально. Но если есть одна одинарная кавычка (например, в: не), это приводит к сбою моего скрипта. Позвольте мне показать вам в деталях.
Проблема
$Name = "Dont display" ##is working completly fine
(Select-Xml -Path "C:\SomePath\Somexml.xml" -XPath "//q1:Options[q1:Name = '$Name']" -Namespace $namespace).Node.InnerText ##is working completly fine
$Name = "Don't display" ##crashes script
(Select-Xml -Path "C:\SomePath\Somexml.xml" -XPath "//q1:Options[q1:Name = '$Name']" -Namespace $namespace).Node.InnerText ##crashes script
Вывод ошибки powershell:
Select-Xml : '//q1:Options[q1:Name = 'Don't display']' has an invalid token.
At line:251 char:41
+ ... ing_Name = (Select-Xml -Path "C:\SomePath\Somexml.xml" -XPath ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Select-Xml], XPathException
+ FullyQualifiedErrorId : System.Xml.XPath.XPathException,Microsoft.PowerShell.Commands.SelectXmlCommand
Что я пробовал до сих пор
Конечно, я пробовал разные цитаты, такие как:
$Name = """Don't display"""
$Name = '"Don't display"'
$Name = "'Don't display'"
$Name = "'Don't display'"
$Name = 'Don't display'
$Name = ''Don't display''
Похоже, может быть проблема с правилами кавычек powershell и нотацией XPath.
Но, может быть, у кого-то из вас, ребята, есть идея, как это решить.
Большое спасибо