В данной статье будет рассмотрен способ добавления пользователей в определенные для них группы, информация по которым будет браться из базы данных.
Следующий командлет PowerShell добавляет пользователя AD в заданную локальную группу пользователей:
Следующий командлет PowerShell добавляет пользователя AD в заданную локальную группу пользователей:
function Add-LocalUser{ Param( $computer = $env:computername, $group = "GroupName"Следующий командлет выполняет SQL-запрос на заданной базе данных MS SQL Server и возвращает табличный результат., $userdomain = $env:userdomain, $username = $env:username ) ([ADSI]"WinNT://$computer/$group,group").psbase.Invoke("Add",([ADSI]"WinNT://$userdomain/$username").path) }
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"] }