Разбор "" - Нераспознанная управляющая последовательность \T

Я пытаюсь изменить файл .config. эта строка кода предназначена только для замены в этом файле и нескольких других с новым из файла xml, но это идет позже в коде, в настоящее время у меня есть проблема с этой строкой, так как я не могу передать ее в переменную каким-то образом что она будет обработана как обычная строка, не будет изменена никоим образом и не вызовет исключение "Синтаксический анализ" - Нераспознанная escape-последовательность \T"

Я всегда делал это таким образом, если мне не нужно использовать переменные внутри:

$oldValueSU = '<add key = "splunk_username" value = "${(splunk_username=D:\Tools\localtokens.xml)}"/>'

я тоже таким способом пробовал

$oldValueSU = "<add key = ""splunk_username"" value='`${(splunk_username=D:\Tools\localtokens.xml)}'/>"

Ни один из этих вариантов не работает. Я все еще получаю сообщение об ошибке "анализ "[Путь, который я указал выше]" - Нераспознанная escape-последовательность \T".

Как работает скрипт: Скрипт работает таким образом, что он берет эту переменную и просматривает весь файл, чтобы найти математику, которую делает один из них, затем он берет путь к этому файлу и добавляет его к другой переменной, а затем изменяет ее значение на другую строку. .


Если нужна дополнительная информация, буду рад ее предоставить

Используйте две обратные косые черты вместо одной, чтобы избежать обратной косой черты.

jdweng 09.02.2023 12:05

Если я сделаю это, путь также изменится и будет выглядеть так: «D:\\Tools\\localtokens.xml», если вы не имеете в виду что-то другое

VaxiZ 09.02.2023 12:28

Пожалуйста, отредактируйте свой вопрос, чтобы улучшить ваш минимально воспроизводимый пример. В частности, поделитесь соответствующим фрагментом кода, а также образцом данных (при необходимости очищенным) и полным сообщением об ошибке.

JosefZ 09.02.2023 12:52

Похоже, вы пытаетесь обновить файл xml (config). Эмпирическое правило заключается в использовании возможностей PowerShells XML вместо строковых методов, таких как поиск и замена.

Theo 09.02.2023 14:07

Абсолютно верно. Это только то, как это выглядит в отладчике.

jdweng 09.02.2023 14:35

Я пытаюсь изменить файл .config. эта строка кода предназначена только для замены в этом файле и нескольких других с новым из файла xml, но это идет позже в коде, в настоящее время у меня есть проблема с этой строкой, так как я не могу передать ее в переменную каким-то образом что она будет обработана как обычная строка, не изменит ее никоим образом и не вызовет исключение "Синтаксический анализ" - Нераспознанная escape-последовательность \T"

VaxiZ 09.02.2023 15:19

Что производит «нераспознанную escape-последовательность»? Я могу сказать вам, что это не PowerShell, потому что обратная косая черта не является escape-символом в PowerShell. Если вы попробуете свое первое выражение в командной строке PowerShell, оно будет возвращено вам точно так, как вы указали.

Jeroen Mostert 09.02.2023 15:31

Это сценарий powershell, указанный в задании Дженкинса.

VaxiZ 09.02.2023 15:36

Верно - значит, Дженкинс (или его часть) жалуется тогда, возможно, потому, что сценарий каким-то образом передается ему в строке с неправильным экранированием, или потому, что вы пересекли свои уровни. Проверьте, как там все настроено. Если возможно, попробуйте совершенно другой способ выполнения скриптов, исключающий любую возможность чтения скрипта чем-то другим, кроме PowerShell. Опять же, если вы откроете приглашение PowerShell и вставите в него $oldValueSU = '<add key = "splunk_username" value = "${(splunk_username=D:\Tools\localtokens.xml)}"/>', вы получите именно то, что просили.

Jeroen Mostert 09.02.2023 15:44

Это не вина Дженкинса, я только что проверил, что вы можете заменить любую строку этой, но вы не можете сделать это по-другому, потому что вы получаете эту ошибку. Я никогда не сталкивался с такой проблемой раньше

VaxiZ 09.02.2023 16:11

Что ж, это не вина PowerShell, так что вам просто нужно искать настоящую проблему. Если другие люди не могут воспроизвести его (а я, конечно же, не могу, используя только приглашение PowerShell), они не смогут помочь. Рассмотрите возможность добавления сведений о том, как именно вы настраиваете задание Дженкинса и помечаете тегом jenkins.

Jeroen Mostert 09.02.2023 16:15
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
11
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, я нашел проблему и решение в своем коде.

Проблема заключалась в попытке проверить, соответствует ли содержимое файла заданной строке

if (($file -match $oldValueSU) -and ($file -match $oldValueSP)) 

Он использовал -match, который использует Regex, который был кузеном исключения, на которое я изменил его:

if (($file -like "*$oldValueSU*") -and ($file -like "*$oldValueSP*"))

После этого в части, где в моем коде я использовал -replace (который также использует Regex):

$fileContentPathTemp -replace "*$oldValueSU*", $newValueSU

Я изменил его на .Replace, который работает непосредственно со строкой, и это решило проблему:

$fileContentPathTemp.Replace($oldValueSU,$newValueSU)

Таким образом, вся проблема была основана на использовании Regex, это решение больше похоже на обходной путь, который просто не использует его вообще.

Я надеюсь, что это решение поможет кому-то в будущем, я прошу прощения за то, что не предоставил всю необходимую информацию в начале. Спасибо всем за потраченное время на мою проблему

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