извлечь отдельный атрибут из хранимой процедуры SQL SERVER в powershell - PullRequest
0 голосов
/ 26 февраля 2019

В настоящее время я сталкиваюсь с этой проблемой:

У меня есть таблица в SQL Server, которая имеет 4 столбца, и я использую PowerShell для извлечения данных

$connectionString = "Data Source=xx.xx.xx.xx,1433;Initial Catalog=DB;User Id=User; Password=password;"
$sqlCommand="dbo.sp_sel_hailGU"
$connection = new-object system.data.SqlClient.SQLConnection($connectionString)


$command = new-object system.data.sqlclient.sqlcommand($sqlCommand, $connection)
$command.CommandType = [System.Data.CommandType]::StoredProcedure

# $parameter = New-Object System.Data.SqlClient.SqlParameter ("@TradeDateParam", $tradeDate)
$command.Parameters.AddWithValue("@ImgName", $ImgName) | Out-Null 

$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command

$connection.Open()   
$adapter.Fill($result) | Out-Null
$connection.Close()

return $result.Tables

Этот код показывает всезначения из таблицы в следующем формате

attribute1: value1
attribute2: value22
attribute3: value33
attribute4: value44

attribute1: value2
attribute2: value222
attribute3: value333
attribute4: value444

Однако в Powershell я хочу получить значения каждого атрибута отдельным способом и назначить их переменной Powershell, чтобы сделать некоторыеобработка данных

Я пытался создать конвейер для переменной, пытаясь получить атрибуты, но безрезультатно

Любая помощь будет оценена

С уважением

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете вывести значение объекта, используя точечные обозначения.

$var.Access.IdentityReference

или этот ..

$($var.Access).IdentityReference

Что касается этого ...

получить значение каждого атрибута отдельным способом ...

что это значит?

Если вы хотите отделить эти два элемента значений друг от друга ...

attribute1: value1
attribute2: value22
attribute3: value33
attribute4: value44

attribute1: value2
attribute2: value222
attribute3: value333
attribute4: value444

...

Вы можете разделить на ':' и выбратьнужное вам положение.

$DBValues = @'
    attribute1: value1
    attribute2: value22
    attribute3: value33
    attribute4: value44

    attribute1: value2
    attribute2: value222
    attribute3: value333
    attribute4: value444
'@

$DBValues -split ': '

Или выберите значение, используя RegEx ... Пример:

# Grab the string value based on the match
[regex]::Matches($DBValues,'\svalue.*').Value

# Grab the string value after the match
[regex]::Matches($DBValues,'(?<=attribute.*[:]\s).*?(?=\s)').Value

Что касается этого ...

назначьте их переменной Powershell

... вы не можете передавать данные, пока не настроите их в своем скрипте в

param
(
  [Parameter(mandatory=$true, ValueFromPipeline=$true)]$InputObject,
  [Parameter(mandatory=$true)]$FileName
)
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...