我在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 "<br/>`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;)并且肯定会被添加。不知道为什么它没有传递到数据库
答案 0 :(得分:3)
您必须将命令类型设置为存储过程
$cmd.CommandType = [System.Data.CommandType]::StoredProcedure