Bir çox təşkilatlarda istifadəçi məlumatları müxtəlif sistemlər arasında səpələnmişdir ki, bu da ardıcıllığı və sinxronizasiyanı təmin etməyi vacib edir. Bu məqalə SQL Server verilənlər bazası və Active Directory arasında istifadəçi məlumatlarını sinxronlaşdırmaq üçün nəzərdə tutulmuş PowerShell skriptini təqdim edir. Bu skript istifadəçi hesablarının bu iki kritik sistem arasında yenilənməsini və uyğunlaşdırılmasını təmin etmək prosesini asanlaşdırır.
İstifadəçi məlumatlarını niyə sinxronlaşdırmalısınız?
Təşkilatlar tez-tez müxtəlif verilənlər bazalarında istifadəçi məlumatlarını idarə edir, SQL Server proqrama aid məlumatların saxlanması üçün ümumi seçimdir. Digər tərəfdən, Active Directory şəbəkə üzrə autentifikasiya və avtorizasiya xidmətləri göstərən istifadəçi hesabları üçün mərkəzi repozitor kimi xidmət edir.
İstifadəçi məlumatlarının sinxronizasiyası bir neçə səbəbə görə vacibdir:
- Data Integrity: İstifadəçi məlumatının bütün sistemlərdə ardıcıl və dəqiq olmasını təmin edir.
- Effektivlik: İstifadəçi hesablarının yenilənməsi prosesini avtomatlaşdırır, vaxta qənaət edir və insan səhvi riskini azaldır.
- Uyğunluq: İstifadəçi məlumatlarını sinxronlaşdırmaqla təhlükəsizlik və məlumatların idarə edilməsi siyasətlərinə uyğunluğu təmin edir.
PowerShell Skripti
- Modulları İdxal etmək
Funksionallığını başa düşmək üçün PowerShell skriptini addım-addım parçalayaq:
# Import the SQL Server module
Import-Module SqlServer -DisableNameChecking
Bu skript lazımi PowerShell modullarını idxal etməklə başlayır: SQL Server qarşılıqlı əlaqəsi üçün SqlServer və Active Directory idarə etmək üçün ActiveDirectory.
2. Bağlantı Detallarını daxil edin
#SQL Server connection details
$SqlServer = "192.168.2.101" # sql serverin IP unvanı və ya FQDN
$Database = "Users"
$SqlUsername = "sa"
$SqlPassword = "password"
#Active Directory connection details
$DomainController = "dc.rz.local"
$ADUsername = "sqladmin"
$ADPassword = "password"
IP ünvanları, etimadnamələr və verilənlər bazası məlumatları daxil olmaqla SQL Server və Active Directory üçün əlaqə təfərrüatlarını müəyyənləşdirir.
- SQL Query və Insert Statement
# SQL query to retrieve user data
$SqlQuery = "SELECT * FROM dbo.UsersTable"
Bu skript müəyyən edilmiş SQL Server cədvəlinə istifadəçi məlumatlarını daxil etmək üçün SQL sorğusu hazırlayır. Sorğudakı parametrlər daha sonra Active Directory məlumatları ilə doldurulacaq.
4. Active Directory Əlaqəsini qurulması
# Establish Active Directory connection
$ADCredentials = New-Object System.Management.Automation.PSCredential -ArgumentSiyahı $ADUsername, (ConvertTo-SecureString -String $ADPassword -AsPlainText -Force)
$ADSession = New-PSSession -ComputerName $DomainController -Credential $ADCredentials
Invoke-Command -Session $ADSession -ScriptBlock {
Import-Module ActiveDirectory
}
Göstərilən Active Directory serveri ilə PowerShell sessiyası yaradır və həmin sessiya daxilində Active Directory modulunu idxal edir.
5. İstifadəçi məlumatları üçün Active Directory sorğusu
# Query Active Directory for user data
$ADUsers = Get-ADUser -Filter *
İstifadəçi obyektləri ilə $ADUsers dəyişənini dolduraraq, Active Directory-dən istifadəçi məlumatlarını alır.
6. SQL Server Bağlantısını qurulması
# Establish SQL Server connection
try {
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$SqlServer;Database=$Database;User Id=$SqlUsername;Password=$SqlPassword;"
$SqlConnection.Open()
# Execute SQL query
$SqlCmd = $SqlConnection.CreateCommand()
$SqlCmd.CommandText = $SqlQuery
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet) | Out-Null
}
catch {
Write-Host "Error connecting to SQL Server: $_"
}
finally {
$SqlConnection.Close()
}
Göstərilən əlaqə detallarından istifadə edərək SQL Server verilənlər bazası ilə əlaqə yaradır.
7. Hər bir istifadəçini emal edilməsi və SQL Serverə daxil edilməsi
# Process each user in the dataset
foreach ($user in $DataSet.Tables[0].Rows) {
$username = $user["Username"]
$givenName = $user["GivenName"]
$surname = $user["Surname"]
$displayName = $user["DisplayName"]
$description = $user["Description"]
$password = $user["Password"]
$department = $user["Department"]
$company = $user["Company"]
$city = $user["City"]
$accountExpiresDate = $user["AccountExpiresDate"]
$userPrincipalName = $user["UserPrincipalName"]
# Check if the user exists in Active Directory
$existingUser = Get-ADUser -Filter {SamAccountName -eq $username} -ErrorAction SilentlyContinue
if ($existingUser) {
# Update existing user account details
Set-ADUser -Identity $username -GivenName $givenName -Surname $surname -DisplayName $displayName -Description $description -Department $department -Company $company -City $city
Write-Host "Updated user: $username"
} else {
# Create a new user account in Active Directory with a default Name
$defaultName = $username # You can customize the default name
New-ADUser -SamAccountName $username -GivenName $givenName -Surname $surname -DisplayName $displayName -Description $description -Department $department -Company $company -City $city -AccountExpires $accountExpiresDate -UserPrincipalName $userPrincipalName -Name $defaultName -Enabled $true -PassThru
Write-Host "Created new user: $username"
}
}
Active Directory-dən alınan hər bir istifadəçi obyekti vasitəsilə təkrarlanır, SQL sorğu parametrlərini doldurur və istifadəçi məlumatlarını SQL Server cədvəlinə daxil etmək üçün SQL sorğusunu yerinə yetirir.
8. Təmizləmə
# Clean up
$SqlConnection.Close()
Remove-PSSession $ADSession
SQL Server bağlantısını bağlayır və resursları buraxmaq üçün Active Directory sessiyasını silir.
Nəticə
Bu PowerShell skripti SQL Server və Active Directory arasında istifadəçi məlumatlarını sinxronlaşdırmaq üçün səmərəli və avtomatlaşdırılmış həll təklif edir. Hər bir addımı başa düşməklə, idarəçilər skripti öz xüsusi mühitlərinə uyğunlaşdıra və istifadəçi məlumatlarının bu kritik sistemlər arasında qüsursuz inteqrasiyasını təmin edə bilərlər. Bu sinxronizasiya prosesi məlumatların bütövlüyünü, səmərəliliyini və təşkilat daxilində uyğunluğu artırır.
Bu skriptdən istifadə etməklə təşkilatlar vahid və müasir istifadəçi idarəetmə sistemini saxlaya bilər və nəticədə öz İT infrastrukturunun ümumi təhlükəsizliyinə və etibarlılığına töhfə verə bilər.

