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.

Но, может быть, у кого-то из вас, ребята, есть идея, как это решить.

Большое спасибо

0 ответов

Другие вопросы по тегам