Я пытаюсь автор сценария PowerShell, который просто выполняет хранимую процедуру из моей базы данных администрирования, но я бег в это:Позиционный параметр не может быть найден, который принимает аргумент System.Data.SqlClient.SqlDataReader
New-Object : A positional parameter cannot be found that accepts argument 'System.Data.SqlClient.SqlDataReader'.
At C:\Scripts\Deployment\SPROCTest.ps1:19 char:15
+ $reader = New-Object -TypeName System.Data.SqlClient.SqlDataReader = $GetEn ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-Object], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
кодекс, казалось бы, довольно прямо вперед, как это:
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection
$connection.ConnectionString = "Server=bhbrf95xva.database.windows.net;Database=MY.DATABASE;Integrated Security=False;User=theuser;Password=xxx^xxx"
$connection.Open()
$GetEnvironment = New-Object System.Data.SqlClient.SqlCommand
$GetEnvironment.CommandText = "Select_Environment_ByEnvironmentName"
$GetEnvironment.CommandType = [System.Data.CommandType]::StoredProcedure
$GetEnvironment.Connection = $connection
$ParamGetEnvironment = New-Object -TypeName System.Data.SqlClient.SqlParameter
$ParamGetEnvironment.ParameterName = "@EnvironmentName"
$ParamGetEnvironment.SqlDbType = [System.Data.SqlDbType]::VarChar
$ParamGetEnvironment.Direction = [System.Data.ParameterDirection]::Input
$ParamGetEnvironment.Value = 'TheValue'
$GetEnvironment.Parameters.Add($ParamGetEnvironment)
$reader = New-Object -TypeName System.Data.SqlClient.SqlDataReader = $GetEnvironment.ExecuteReader()
$connection.Close()
Я не слишком обеспокоен (пока) с фактическим форматом этого сценария, я просто пытаюсь заставить его работать первым, но я Интересно, почему и как я узнаю это? System.Data.SqlClient.SqlDataReader
?
Нужно ли добавить плагин?
Я не могу попробовать это сейчас, но SqlDataReader не является вам неинтересным. Вы просто получаете возвращаемое значение из SqlCommand.ExecuteReader. Вы попробовали _ $ reader = $ GetEnvironment.ExecuteReader() _ – Steve
@Steve Опубликовать, что в качестве ответа я считаю, что это правильно. Вероятно, OP думает, что им нужно объявить тип, но они этого не делают. – JasonMArcher
@JasonMArcher да, действительно, в SqlDataReader нет конструктора, поэтому код не может быть прав, спасибо – Steve