1. Əsas səhifə
  2. Microsoft
  3. Windows Server

PowerShell ilə SQL Server və Active Directory arasında istifadəçi məlumatlarının sinxronlaşdırılması

PowerShell ilə SQL Server və Active Directory arasında istifadəçi məlumatlarının sinxronlaşdırılması

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

  1. 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.

  1. 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.


		
Bu məqaləyə münasibətiniz necə oldu?
  • 1
    xo_uma_g_lir
    Xoşuma gəlir
  • 1
    alq_lay_ram
    Alqışlayıram
  • 1
    _yl_ndim
    Əyləndim
  • 1
    _ox_m_mnun_qald_m
    Çox məmnun qaldım
  • 0
    _m_n_d_nc_liy_m
    Mən düşüncəliyəm
  • 0
    m_yus_oldum
    Məyus oldum
  • 0
    m_n_ox_q_z_bliy_m
    Mən çox qəzəbliyəm

My passion for troubleshooting and staying up to date with the latest advancements in the Linux world drives me to provide practical tutorials and guides. I'm excited to share my knowledge and help fellow system administrators and Linux enthusiasts enhance their skills.

Müəllifin Profili