Sql server Powershell单引号SQL EXEC之前参数中的所有数组元素

Sql server Powershell单引号SQL EXEC之前参数中的所有数组元素,sql-server,powershell,stored-procedures,Sql Server,Powershell,Stored Procedures,我有下面的代码片段,除了看起来没有一个值用存储过程给出的单引号括起来外,所有代码都正常工作 在执行SQL之前,是否有方法告诉它将$p中的每个元素用单引号括起来 $p包含30个不同的元素,可以是数字或字母数字 Param ( [Parameter(Mandatory=$true)][array]$p ) Process { $conn = New-Object System.Data.SqlClient.SqlConnection $conn.ConnectionStrin

我有下面的代码片段,除了看起来没有一个值用存储过程给出的单引号括起来外,所有代码都正常工作

在执行SQL之前,是否有方法告诉它将
$p
中的每个元素用单引号括起来

$p
包含30个不同的元素,可以是数字或字母数字

Param (
    [Parameter(Mandatory=$true)][array]$p
)
Process {
    $conn = New-Object System.Data.SqlClient.SqlConnection
    $conn.ConnectionString = "Data Source=OurServer;Initial Catalog=OurDatabase;Integrated Security=true"

    $cmd = New-Object System.Data.SqlClient.SqlCommand
    $cmd.Connection = $conn
    $cmd.CommandTimeout = 0
    $cmd.CommandText = "EXEC sp_test $p"
}

有许多选项可用于更新数组元素:

# Using -replace
$p = $p -replace '^.*$','''$&'''

# Using foreach-object and string format operator
$p = $p | Foreach-Object { "'{0}'" -f $_ }

# Using foreach method
$p = $p.foreach({"'$_'"})

有许多选项可用于更新数组元素:

# Using -replace
$p = $p -replace '^.*$','''$&'''

# Using foreach-object and string format operator
$p = $p | Foreach-Object { "'{0}'" -f $_ }

# Using foreach method
$p = $p.foreach({"'$_'"})

请考虑使用<代码> $CMD。参数< /COD>而不是<代码> $CMD命令类型=“StulePosits”< /C> >,避免引用引用和可能的SQL注入。请考虑使用<代码> $CMD。参数< /C> >和<代码> $CMD命令类型=“StulePo规程”< /C>避免引用问题和可能的SQL注入。这里唯一的问题是,如果值为空,则当您期望第一个选项为
'
时,仅添加一个引号,如
'
。这里唯一的问题是,如果值为空,则当您期望第一个选项为
'
时,仅添加一个引号,如
'
选项