PowerShell с радостью принимает кавычки Unicode (не в диапазоне ASCII) вместо обычных, в диапазоне ASCII - см. Этот ответ
Например, как в вашем коде:
‘
(ЛЕВАЯ ОДНОКВАЖНАЯ КАРТА, U+2018
) может использоваться вместо ASCII-диапазона '
(APOSTROPHE, U+0027
), также известный как одинарная кавычка .
“
(СЛЕДУЮЩАЯ ДВОЙНАЯ КВАРТИРА, U+201C
) может быть используется вместо ASCII-диапазона "
(МАРКА ЦИТАТЫ, U+0022
), иначе двойная кавычка .
Для контраста , Я подозреваю, SQL Сервер не подозревает эти замены , поэтому вам придется использовать ASCII-диапазон '
и "
для кавычек встраивается в ваши запросы .
Поэтому немедленное исправление:
$Query = ‘ SELECT * FROM dbo.tbl1 where value = ‘ + “'” +$mail + “'”
Обратите внимание, как только символы внутри “...”
были изменены с ‘
на '
; внешнее цитирование, которое интерпретируется - и удаляется - с помощью PowerShell может продолжать использовать кавычки не из диапазона ASCII.
Однако вы можете более просто использовать расширяемая строка ("..."
) с встроенными ссылками на переменные:
$Query = " SELECT * FROM dbo.tbl1 where value = '$mail'"
Обратите внимание, что я также переключил внешние двойные кавычки к их версиям ASCII-диапазона. Как правило, даже в PowerShell придерживаться обычных кавычек в диапазоне ASCII , чтобы не возникало проблем из-за кодировки символов при совместном использовании кода.