Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Экранирование кавычек

Ответить
Настройки темы
PowerShell - Экранирование кавычек

Старожил


Сообщения: 208
Благодарности: 5

Профиль | Отправить PM | Цитировать


Добрый день.

Есть скрипт, который ищет в почтовом ящике пользователя письмо по параметрам.
Параметры для поиска письма берутся из MessageTrackingLog

Код: Выделить весь код
$message = Get-MessageTrackingLog -EventID "RECEIVE" -MessageID "$messageID"
$date = $message.Timestamp.ToString("dd\/MM\/yyyy")
$to = $message.Recipients -join "," # преобразовываем массив в строку
$query = "subject:" + "'" + $message.MessageSubject + "'" + " " + "from:" + $message.Sender + " " + '"' + "to:" + '"' + $to + " " + "sent:" + $date 
Search-Mailbox -Identity $mailbox -SearchQuery {$query} -TargetMailbox admin -TargetFolder "test" -LogOnly -LogLevel Full
Проблема заключается в том, что если в теме письма будет, что-то типа:
Предупреждение Backup: Задание выполнено (Сервер: "Server1") (Задание:"Start1")
То эти кавычки ломают весь запрос $query.
Подскажите, как можно решить проблему? Какое-то динамическое экранирование кавычек или какое-то глобальное экранирование может быть?

Отправлено: 16:28, 09-10-2015

 

Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


или так:
Код: Выделить весь код
-replace "(['`"$%&])",'\$1'
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:53, 12-10-2015 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 208
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
-replace "(['`"$%&])",'\$1 »
насколько я понимаю, такой вариант неприемлем, по 2 причинам
1. экранирование в ps делается не \, а `
2. что бы заэкранировать одинарные кавычки, вторая часть выражения, должны быть в двойных (, "`'"), а что бы заэкранировать двойные, она должна быть в одинарный (, '`"')
если ошибаюсь пожалуйста поправьте.

Отправлено: 12:16, 13-10-2015 | #12


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


pogo, Во всех предыдущих примерах экранирование производится обратным слешем, вы определитесь чем надо экранировать в теле отправляемого сообщения. Для меня такой задачи нет по определению, я не работаю в IT сфере (даже нет компьютера), поэтому не могу дать исчерпывающий ответ. Что касается экранирования '`' или '\' в powershell, то ситуации бывают разные. Попробуйте:
Код: Выделить весь код
('str\ing') -split "\\"
('str\ing') -split "`\"

Отправлено: 13:14, 13-10-2015 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Экранирование кавычек

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Экранирование восклицательного знака Cosmogor Скриптовые языки администрирования Windows 4 02-11-2023 14:34
Разное - [решено] Обработка кавычек в семерке pve Microsoft Windows 7 6 28-01-2010 08:03
Экранирование оператора mihan81 Хочу все знать 12 12-05-2009 14:15
Разное - [решено] передача кавычек в XmlHttpRequest harrique Программирование и базы данных 3 26-01-2009 08:29
СКС/Passive - Сетевой кабель. Заземление. Экранирование. Внешняя прокладка. Категории. Раскладка. Tat Сетевое оборудование 118 23-03-2007 22:55




 
Переход