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



我有下面的代码片段,除了看起来没有一个值用存储过程给出的单引号括起来之外,一切都很好。

有没有一种方法可以告诉它在执行SQL之前用单引号将$p中的每个元素包装起来?

CCD_ 2包含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({"'$_'"})

最新更新