Сохранение вывода SP в переменную в powershell - PullRequest
0 голосов
/ 19 февраля 2020
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=TSG-ADLT014;Integrated Security=true;Initial Catalog =GenExAll"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "exec usp_GetAccountForRemoteMailbox"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]

$name = "test"
$LoginId = "jsmith"
$Userid = "14"

write-host "Enable-RemoteMailbox ""$name"" -RemoteRoutingAddress ""$LoginId@wkhs.mail.onmicrosoft.com"""

Сейчас я просто передаю значение в параметре $ name, $ loginid, $ userID. Мне нужно сохранить вывод из sp в переменную, а затем использовать эту переменную.

Это изображение является выводом sp, sp выводит идентификатор пользователя, логин, имя

ДЛЯ ВКЛЮЧЕНИЯ КОДА:

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=TSG-ADLT014;Integrated Security=true;Initial Catalog =GenExAll"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "CREATE TABLE [dbo].[Ident_TESTTABLE](
    [UserId] [int] NOT NULL,
    [LoginId] [nvarchar](128) NOT NULL,
    [Name] [nvarchar](2000) NULL
    ) INSERT INTO Ident_TESTTABLE VALUES(12,'ATEST','AMSAL TEST') SELECT  top 1 *  FROM [Ident_TESTTABLE] "
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]

$name = "test"
$LoginId = "jsmith"
$Userid = "14"

write-host "Enable-RemoteMailbox ""$name"" -RemoteRoutingAddress ""$LoginId@wkhs.mail.onmicrosoft.com"""

write-host $name
write-host $LoginId
write-host $Userid

1 Ответ

0 голосов
/ 19 февраля 2020

Это ...

write-host "Enable-RemoteMailbox ""$name"" -RemoteRoutingAddress ""$LoginId@wkhs.mail.onmicrosoft.com"""

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

Это то, что вы пытаетесь сделать ...

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=TSG-ADLT014;Integrated Security=true;Initial Catalog =GenExAll"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "CREATE TABLE [dbo].[Ident_TESTTABLE](
    [UserId] [int] NOT NULL,
    [LoginId] [nvarchar](128) NOT NULL,
    [Name] [nvarchar](2000) NULL
    ) INSERT INTO Ident_TESTTABLE VALUES(12,'ATEST','AMSAL TEST') SELECT  top 1 *  FROM [Ident_TESTTABLE] "
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]| 
ForEach {Enable-RemoteMailbox $PSItem.name -RemoteRoutingAddress $PSitem.LoginId@wkhs.mail.onmicrosoft.com}

Имеется в виду, взять вывод от SP, как это происходит, чтобы включить почтовые ящики O35? Нет причин выводить его, чтобы использовать. Ну, если только вы не захотели и даже этого не должны просто делать $ PSItem.name, et c. Никакой реальной причины для дополнительных переменных, ИМХО.

О, так вы имеете в виду такие вещи ...

$SqlQuery = "select Server from ALLdevices where SerialNumber = '$($item.SerialNumber)'"

или это ...

$SerialNumber='234978'
$SqlQuery=@"
SELECT Server
FROM ALLdevices
WHERE SerialNumber = '$SerialNumber'
"@
$SqlQuery

Подобные примеры есть во всей сети. Выше приведено только то, что я сохранил в своих файлах OneNote. Искать, скажем, это ...

'передать переменную PowerShell в sql запрос'

или это ...

'передать переменную PowerShell в SQL хранимую процедуру'

... приведёт пример (ы), подобные этому ...:

Использование переменных Powershell в хранимом файле запросе с SQL Сервером

SQL Сервер - Ошибка передачи переменной в хранимую процедуру

Передать переменную powershell в значение SQL во время отсутствия данных (invoke-sqlcmd2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...