Sql server 添加参数以在powershell中执行存储过程

Sql server 添加参数以在powershell中执行存储过程,sql-server,powershell,Sql Server,Powershell,我在尝试执行powershell脚本时遇到问题 $UuidMalo=0x0A398A6ADC9BE94CAD6769A81A7A5062 $UuidBueno = 0xA66C97A21D6C2748BD7D7D865205293E $SQLCmd = New-Object System.Data.SqlClient.SqlCommand $SQLCmd.CommandType = [System.Data.CommandType]::StoredProcedure $SQLCmd.Comma

我在尝试执行powershell脚本时遇到问题

$UuidMalo=0x0A398A6ADC9BE94CAD6769A81A7A5062
$UuidBueno = 0xA66C97A21D6C2748BD7D7D865205293E

$SQLCmd = New-Object System.Data.SqlClient.SqlCommand
$SQLCmd.CommandType = [System.Data.CommandType]::StoredProcedure
$SQLCmd.CommandText = $SQLCmdString
$SQLCmd.Connection = $SQLConnection


$SQLCmd.Parameters.Add("@contactUUID1",[system.data.SqlDbType]::Binary) 
$SQLCmd.Parameters['@contactUUID1'].Direction = [system.data.ParameterDirection]::Input

$SQLCmd.Parameters['@contactUUID1'].value = $UuidMalo1
执行脚本后的结果是

Must specify a file system
Exception calling "ExecuteNonQuery" with "0" argument(s): "Failed to convert parameter value from a String to a Byte[].
"
At C:\Program Files\ca\PAM\scripts\mergeContacts.ps1:52 char:34
+ $Result = $SQLCmd.ExecuteNonQuery <<<< () | out-null
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException
必须指定文件系统
使用“0”参数调用“ExecuteOnQuery”时出现异常:“未能将参数值从字符串转换为字节[]。
"
在C:\Program Files\ca\PAM\scripts\mergeContacts.ps1:52 char:34

+$Result=$SQLCmd.ExecuteNonQuery我修改了代码,它正常工作了!但有时连接是一个问题。谢谢

param(
[String]$UuidMalo, 
[String]$UuidBueno
)


clear; 





$SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
$SQLConnection.ConnectionString = "server=XXXXX-08\XXXXX,1434;database=mdb;user=XXXXX;Password=XXXXXXXX"
$SqlConnection.Open()

$sqlCommand=$sqlConnection.CreateCommand()
$sqlCommand.CommandTimeout = 120
$sqlCommand.CommandText="exec spCheckListContacts " + $UuidMalo+ ","+ $UuidBueno+ ""

$sqlReader = $sqlCommand.ExecuteReader()
$SqlConnection.close()

什么是
$uuidmallo1
?这与“$UuidMalo”相同吗?对不起,是的是相同的变量。如果这不符合要求,很抱歉,但看起来PowerShell有一个强制转换问题。如果您像这样声明变量,
[byte[]$UuidMalo=0x0A,0X39,0X8A,0X6A,0XDC,0X9B,0XE9,0X4C,0XAD,0X67,0X69,0XA8,0X1A,0X7A,0X50,0X62
param(
[String]$UuidMalo, 
[String]$UuidBueno
)
clear; 
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection "server=XXXXX-08\XXXXX,1434;database=mdb;user=XXXXX;Password=XXXXXXXX"
$SqlConnection.Open()

$sqlCommand=$sqlConnection.CreateCommand()
$sqlCommand.CommandTimeout = 120
$sqlCommand.CommandText="exec spCheckListContacts " + $UuidMalo+ ","+ $UuidBueno+ ""

$sqlReader = $sqlCommand.ExecuteReader()
$SqlConnection.close()


try this i thing in your case it will work