首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >powershell中的Invoke-SQLCMD

powershell中的Invoke-SQLCMD
EN

Stack Overflow用户
提问于 2019-12-10 19:29:35
回答 2查看 829关注 0票数 0

很抱歉问了个琐碎的问题但是..。

我在尝试使用invoke命令在PowerShell中执行SQL命令时遇到问题。

当我尝试将字符串添加到SQL命令中时,问题开始出现:

代码语言:javascript
复制
$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中工作,因为整个查询都在单引号(' ')中。

我能做些什么来读取单引号中的字符串?

EN

回答 2

Stack Overflow用户

发布于 2019-12-10 19:35:52

-Query中,您可以像在-ServerInstance-Database中那样使用双引号

票数 0
EN

Stack Overflow用户

发布于 2019-12-10 22:23:05

要在中的字符串文本中嵌入 ' (单引号),您有3种选择:

在单引号字符串('...')中,将它们加倍:

代码语言:javascript
复制
# ' doubled
'Honey, I''m home.'

单引号的字符串是逐字解释的,所以没有其他字符。需要逃脱。

相反,这意味着不会在这样的字符串中展开(内插)任何变量引用或表达式;如果需要这样做-例如,如果查询字符串中的$Job $Job 旨在引用在$Job中定义的PowerShell变量的值,则必须使用 see字符串-请参见下面的内容。

在单引号的here字符串(@'<newline>...<newline>'@)中,根本不需要转义'

这个总是多行的单引号字符串变体不需要对任何字符进行转义。

代码语言:javascript
复制
# No escaping needed (ignore the broken syntax highlighting)
@'
Honey, I'm home.
'@

注意:结束的'@必须在行首-甚至不允许在前面的空格。

在使用双引号的字符串("..."),中,根本不需要对'进行转义。

然而,由于这种可扩展字符串(插值字符串)被设计为将$解释为变量引用(例如,$var)或子表达式(例如,$(1+2))的开始,因此您将不得不转义字符<>E153>文本E158字符。作为 `$

  • ` (反引号)通常用作"中的转义字符(参见下面的链接),因此您可以类似地使用`" PowerShell来转义嵌入的字符。
  • 需要转义文字$字符。因为`$同样适用于可扩展字符串的here-string变体

(@"<newline>...<newline>"@),但嵌入式"不需要转义。

代码语言:javascript
复制
# No escaping of ', but literal $ must be escaped as `$
"Honey, I'm home; I hate my `$Job."

另请参阅:

  • about_Quoting_Rules,关于字符串文字的官方帮助主题。
    • about_Special_Characters,解释了双引号字符串中支持的`-prefixed转义序列,例如表示制表符的`t。请注意,与PowerShell核心6+.

相比,Windows PowerShell支持的序列更少

详细解释可扩展字符串(字符串插值)的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59266202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档