2015-05-06 5 views
0

Я пытаюсь построить SharePoint 2010 listdata.svc запрос, который напоминает:избежать одиночные кавычки в PowerShell

http://server/FooList/_vti_bin/listdata.svc/FooList?$select=Title,Id,OwnerId,Status&$filter=(OwnerId eq 1234 and Status eq 'Ready') 

Одинарные кавычки не работают:

$url = $url + '&$filter=(OwnerId eq 1234 and Status eq 'Ready')' 

также не избежать их бэк- тики:

$url = $url + '&$filter=(OwnerId eq 1234 and Status eq `'Ready`')' 

Если я использую двойные кавычки, $filter заменяются нулевым lengt h string (это не переменная в сценарии):

$url = $url + "&$filter=(OwnerId eq 1234 and Status eq 'Ready')" 

Каков правильный способ избежать одиночных кавычек?

ответ

3

Вы должны удвоить кавычки при использовании одинарных кавычках литералов:

'&$filter=(OwnerId eq 1234 and Status eq ''Ready'')' 
             ^^  ^^ 

Демо:

PS > '&$filter=(OwnerId eq 1234 and Status eq ''Ready'')' 
&$filter=(OwnerId eq 1234 and Status eq 'Ready') 
PS > 

Использование кавычку работает только с двойными кавычками строковых литералов (так как они обрабатывают управляющие последовательности), но тогда вам также необходимо избегать всех других специальных символов (например, $ в именах переменных):

PS > "&`$filter=(OwnerId eq 1234 and Status eq `"Ready`")" 
&$filter=(OwnerId eq 1234 and Status eq "Ready") 
PS > 

Но в однокопированном строковом литерале ` рассматривается как буквальный обратный ход.

Смежные вопросы