В данной статье будет рассмотрен способ добавления пользователей в определенные для них группы, информация по которым будет браться из базы данных.
Следующий командлет PowerShell добавляет пользователя AD в заданную локальную группу пользователей:
Следующий командлет PowerShell добавляет пользователя AD в заданную локальную группу пользователей:
function Add-LocalUser{
Param(
$computer = $env:computername,
$group = "GroupName",
$userdomain = $env:userdomain,
$username = $env:username
)
([ADSI]"WinNT://$computer/$group,group").psbase.Invoke("Add",([ADSI]"WinNT://$userdomain/$username").path)
}
Следующий командлет выполняет SQL-запрос на заданной базе данных MS SQL Server и возвращает табличный результат.function Invoke-SQL {
param(
[string] $dataSource = "ServerName",
[string] $database = "DbName",
[string] $sqlCommand = "select [User], [Domain], [Group] from dbo.vUserRights"
)
$connectionString = "Data Source=$dataSource; " +
"Integrated Security=SSPI; " +
"Initial Catalog=$database"
$connection = new-object system.data.SqlClient.SQLConnection($connectionString)
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
$connection.Open()
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataSet) | Out-Null
$connection.Close()
$dataSet.Tables
}
Получаем из базы данных таблицу принадлежности пользователей к группам и добавляем каждого пользователя в определенную для него локальную группу на данной машине.$users = Invoke-SQL -sqlCommand "select [User], [Domain], [Group] from dbo.vUserRights";
foreach ($user in $users.Rows)
{
Add-LocalUser -group $user["Group"] -username $user["User"] -userdomain $user["Domain"]
}