Записать результат запроса Get-ADUser в таблицу с помощью Powershell - PullRequest
0 голосов
/ 03 июля 2018

Я хочу получить список пользователей из таблицы, просмотреть их электронную почту с помощью Get-ADUser и записать результат обратно в таблицу SQL. Пока я могу сохранить набор результатов в CSV. файл, но как записать в таблицу вместо.

$connString = "Server = 'sql1'; Database = 'test'; Integrated Security = True"
$QueryText = 'SELECT [ADUser] FROM [test].[dbo].[Users]'
$SqlConnection = new-object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = $connString
$SqlCommand = $SqlConnection.CreateCommand()
$SqlCommand.CommandText = $QueryText
$DataAdapter = new-object System.Data.SqlClient.SqlDataAdapter $SqlCommand
$dataset = new-object System.Data.Dataset
$DataAdapter.Fill($dataset)

$dataset.Tables[0] | ForEach {
Get-ADUser -identity $_.ADUser -Properties Name, SamAccountName,mail |
Select Name, SamAccountName, mail |
Export-CSV C:\Users\export3.csv -Append -Encoding UTF8
}

1 Ответ

0 голосов
/ 03 июля 2018

Я бы использовал для этого потрясающий модуль DBATools сообщества PowerShell. Он написан некоторыми давними PowerShell и SQL MVP и облегчает эту задачу.

Сначала установите модуль с

Install-Module DBATools

В модуле есть две команды, которые нам понадобятся для работы. Сначала вы конвертируете обычные объекты PowerShell в таблицу данных SQL с помощью ConvertTo-DBADataTable, затем записываете ее в базу данных SQL с помощью Write-DBADataTable.

Так вот как это выглядит. Я начинаю с создания новой базы данных SQL с именем DBATools в моем экземпляре SQL с именем SCCM. Затем я получаю список пользователей, которых я хочу вставить в таблицу.

enter image description here

Затем я передаю это в | ConvertTo-DbaDataTable и сохраняю в переменной.

$DataTable = get-aduser -Filter * | select Name,DistinguishedName,SurName | ConvertTo-DbaDataTable

И, наконец, я запускаю Write-DBADataTable, чтобы записать эти строки в новую таблицу (создание новой таблицы путем добавления -AutoCreateTable)

Write-DbaDataTable -SqlInstance SCCM -Database DBATools `
  -InputObject $DataTable -Table UserTable -AutoCreateTable

Теперь я перехожу к SSMS и обновляюсь, чтобы увидеть, что моя новая таблица была создана с соответствующими столбцами! Потрясающе и легко-просто!

enter image description here

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