在PowerShell中转义单引号

时间:2015-05-06 16:38:32

标签: powershell sharepoint sharepoint-2010 powershell-v3.0

我正在尝试构建类似于以下内容的SharePoint 2010 listdata.svc查询:

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将替换为零长度字符串(它不是脚本中的变量):

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

逃避单引号的正确方法是什么?

1 个答案:

答案 0 :(得分: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 >

但在单引号字符串文字中,`被视为文字反引号。