首页 文章

Powershell存储过程参数未发送

提问于
浏览
2

我在PowerShell(版本4)脚本中有一个存储过程,用于记录作业的结果

function Log-Build($lastExitCode, $result, $taskId) {
    $date = Get-Date
    $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)

    $cmd = New-Object System.Data.SqlClient.SqlCommand
    $myResult = $result -join "
`r`n" |Out-String $cmd.Connection = $connection; $cmd.CommandText = "LSBuild_LogAndMailResult"; $cmd.Parameters.AddWithValue("@Task_ID",[string]$taskId); $cmd.Parameters.AddWithValue("@Result",[string]$myResult); $cmd.Parameters.AddWithValue("@Deployment_Status",[int]$lastExitCode); $connection.Open() $cmd.ExecuteNonQuery() | Out-Null $connection.Close() }

但是,当我运行它时,我总是得到以下错误响应:

使用“0”参数调用“ExecuteNonQuery”的异常:“过程或函数'LSBuild_LogAndMailResult'期望参数'@Deployment_Status',这是未提供的 .

我检查了Powershell ISE中的终端窗口以确保参数在那里($ cmd.Parameters [“@ Deployment_Status”] . value;)并且它肯定是被添加的 . 不知道为什么它没有传递到数据库

1 回答

  • 3

    您必须将命令类型设置为存储过程

    $cmd.CommandType = [System.Data.CommandType]::StoredProcedure
    

相关问题