很抱歉问了个琐碎的问题但是..。
我在尝试使用invoke命令在PowerShell中执行SQL命令时遇到问题。
当我尝试将字符串添加到SQL命令中时,问题开始出现:
$sqlNAVresutl = Invoke-SQLCMD -Query 'SELECT *
FROM [dbo].[DBO name]
WHERE [dbo].[Job Queue Entry].Status = 2 AND [dbo].[$Job Queue Entry].[Object ID to Run] = 52063060 AND [dbo].[$Job Queue Entry].[User ID] = 'Domain\Account'
GO
'
-ServerInstance "Server name" -Database "dbo name"当我将Domain\Account添加到代码中时,问题就开始了。它可以在SQL中工作,但不能在PowerShell中工作,因为整个查询都在单引号(' ')中。
我能做些什么来读取单引号中的字符串?
发布于 2019-12-10 19:35:52
在-Query中,您可以像在-ServerInstance或-Database中那样使用双引号
发布于 2019-12-10 22:23:05
要在中的字符串文本中嵌入 ' (单引号),您有3种选择:
在单引号字符串('...')中,将它们加倍:
# ' doubled
'Honey, I''m home.'单引号的字符串是逐字解释的,所以没有其他字符。需要逃脱。
相反,这意味着不会在这样的字符串中展开(内插)任何变量引用或表达式;如果需要这样做-例如,如果查询字符串中的$Job $Job 旨在引用在$Job中定义的PowerShell变量的值,则必须使用 see字符串-请参见下面的内容。
在单引号的here字符串(@'<newline>...<newline>'@)中,根本不需要转义'。
这个总是多行的单引号字符串变体不需要对任何字符进行转义。
# No escaping needed (ignore the broken syntax highlighting)
@'
Honey, I'm home.
'@注意:结束的'@必须在行首-甚至不允许在前面的空格。
在使用双引号的字符串("..."),中,根本不需要对'进行转义。
然而,由于这种可扩展字符串(插值字符串)被设计为将$解释为变量引用(例如,$var)或子表达式(例如,$(1+2))的开始,因此您将不得不转义字符<>E153>文本E158字符。作为 `$
` (反引号)通常用作"中的转义字符(参见下面的链接),因此您可以类似地使用`" PowerShell来转义嵌入的字符。$字符。因为`$同样适用于可扩展字符串的here-string变体(@"<newline>...<newline>"@),但嵌入式"不需要转义。
# No escaping of ', but literal $ must be escaped as `$
"Honey, I'm home; I hate my `$Job."另请参阅:
`-prefixed转义序列,例如表示制表符的`t。请注意,与PowerShell核心6+.相比,Windows PowerShell支持的序列更少
详细解释可扩展字符串(字符串插值)的
https://stackoverflow.com/questions/59266202
复制相似问题