使用Powershell将Get-ADUser查询结果写入表

时间:2018-07-03 13:12:54

标签: powershell

我想从表中提取用户列表,使用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 :(得分:3)

为此,我将使用很棒的PowerShell社区DBATools模块。它由一些长期的PowerShell和SQL MVP编写,使这项工作变得容易。

首先,使用

安装模块
Install-Module DBATools

该模块有两个命令需要我们执行。首先,使用ConvertTo-DBADataTable将常规PowerShell对象转换为SQL DataTable,然后使用Write-DBADataTable将其写入SQL DB。

这就是它的样子。我首先在名为DBATools的SQL实例上创建一个名为SCCM的新SQL DB。接下来,我获得了要插入表中的用户列表。

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