Перейти к содержимому

Как вывести пользователей которые состоят в административных группах domain admin, enterprise admin, schema admin

# Импортируем модуль Active Directory
Import-Module ActiveDirectory

# Определяем группы
$groups = "Domain Admins", "Enterprise Admins", "Schema Admins"

# Создаем пустой массив для хранения пользователей
$allUsers = @()

# Получаем пользователей из каждой группы
foreach ($group in $groups) {
    $members = Get-ADGroupMember -Identity $group
    foreach ($member in $members) {
        # Получаем информацию о пользователе и фильтруем по "Password Never Expires"
        $user = Get-ADUser -Identity $member.SamAccountName -Properties PasswordNeverExpires
        if ($user.PasswordNeverExpires -eq $true) {
            # Создаем новый объект с необходимыми свойствами
            $userInfo = [PSCustomObject]@{
                Name                  = $user.Name
                SamAccountName        = $user.SamAccountName
                Group                 = $group
                PasswordNeverExpires   = $user.PasswordNeverExpires
            }
            $allUsers += $userInfo
        }
    }
Читать далее

Как в mssql узнать какие права на базы данных имеет пользователь.

Задача узнать на какие базы и какие права имеет определённый logon в mssql

-- Создаем временную таблицу для сохранения результатов
IF OBJECT_ID('tempdb..#UserMapping') IS NOT NULL
    DROP TABLE #UserMapping;

CREATE TABLE #UserMapping (
    DatabaseName NVARCHAR(128),
    LoginName NVARCHAR(128),
    UserName NVARCHAR(128),
    UserType NVARCHAR(128),
    DefaultSchema NVARCHAR(128),
    DatabaseRole NVARCHAR(128)
);

-- Динамический SQL для всех баз данных
DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += '
USE [' + name + ']; 
INSERT INTO #UserMapping (DatabaseName, LoginName, UserName, UserType, DefaultSchema, DatabaseRole)
SELECT 
    ''' + name + ''' AS [DatabaseName], 
    sp.name AS [LoginName],
    dp.name AS [UserName],
    dp.type_desc AS [UserType],
    dp.default_schema_name AS [DefaultSchema],
    dp2.name AS [DatabaseRole]
FROM 
    
Читать далее

Как сделать шаг проверки первичной реплики в задании в always on

Задача в job сделать первым шагом проверку primary сервера

$StartTime = (Get-Date)
#Добавление шага проверки в джобы
$Sql_primary = 'db01'   # Первичная реплика
 
$JobNames =  Get-DbaAgentJob -SqlInstance $Sql_primary -ExcludeJob 'syspolicy_purge_history', 'AlwaysOn_Latency_Data_Collection', 'dba_Monitoring_Long_Query_Execution', 'sp_WhoIsActive'
foreach ($JobName in $JobNames) {
 
$jobStep = @{
    SqlInstance = $Sql_primary
    Job = $JobName.Name
    StepId = 1
    StepName = "CheckAO"
    Subsystem = "TransactSql"
    Command = "--шаг в джобах для проверки аг
    IF (master.sys.fn_hadr_is_primary_replica ('beer') = 0)
    BEGIN
        EXEC msdb.dbo.sp_stop_job @job_id =  `$(ESCAPE_SQUOTE(JOBID))
    END"
    OnSuccessAction = "GoToNextStep"
    OnFailAction = "QuitWithFailure"
    Insert = $true
    #Force = $true
    }
 New-DbaAgentJobStep @jobStep
}
 
$EndTime = (Get-Date)
$TotalTime =$EndTime-$StartTime
$TotalTime.ToString()

 

Как бэкапить логины (login) и задания (JOB) mssql через dbatools

Задача настроить бэкап в папку включенных и отключённых job и login с mssql

Set-DbatoolsInsecureConnection -SessionOnly
$StartTime = (Get-Date)
$AGLSN = 'db01' #'msk-dblistener' # имя листенера группы доступности
$ExcludeJobs = ''
$ExcludeLogins = ''
$BackupPath = '\\ARC03\sql_backup$\' # В конце обязательно должен стоять "\"
$CurrDate = (Get-Date -Format 'yyyy.MM.dd.HH.mm')

$PrimaryReplica = Get-DbaAgReplica -SqlInstance $AGLSN | Where-Object Role -eq Primary

# Папки для хранения бэкапов
$BackupDisabledJobPath = $BackupPath + $primaryReplica.Name + '\BackupDisabledJob'  # Папка для выключенных джобов
$BackupEnabledJobPath = $BackupPath + $primaryReplica.Name + '\BackupEnabledJob'  # Папка для включённых джобов
$BackupDisabledLoginPath = $BackupPath + $primaryReplica.Name + '\BackupDisabledLogin'  # Папка для выключенных логинов
$BackupEnabledLoginPath 
Читать далее

Как синхронизировать обьекты в always on c первичной реплики на вторичную

$StartTime = (Get-Date)
#Копируем все объекты силой (-force), хорошо выполнять раз в сутки
$AGLSN = 'shr-db01'
  
$primaryReplica =    Get-DbaAgReplica -SqlInstance $AGLSN | Where-Object Role -eq Primary
$secondaryReplicas = Get-DbaAgReplica -SqlInstance $AGLSN | Where-Object Role -eq Secondary
 
      
$secondaryReplicas | ForEach-Object {
         
 
    Copy-DbaAgentJobCategory -Source $primaryReplica.Name -Destination $_.Name -Force   | Select-Object DateTime, Type, DestinationServer, name, status, Notes | Format-Table -Property * -AutoSize | Out-String -Width 1024 | Out-File C:\DBA_scripts_AG\DBA_synchronize_AG_log.txt -Append
    Copy-DbaAgentOperator -Source $primaryReplica.Name -Destination $_.Name -Force      | Select-Object DateTime, Type, DestinationServer, name, status, Notes | Format-Table -Property * -AutoSize | Out-String -Width 1024 | Out-File C:\DBA_scripts_AG\DBA_synchronize_AG_log.txt -Append
    Copy-DbaAgentAlert -Source $primaryReplica.Name -Destination $_.Name -Force         
Читать далее

Как в always on mssql синхронизировать JOB на вторичной реплики и удалять JOB со вторичной когда удалили на первичной.

задача с primary always on копировать JOB на secondary  реплику.

Set-DbatoolsInsecureConnection -SessionOnly
$StartTime = (Get-Date)

# Скрипт проверяет джобы и копирует их на вторичные реплики, если их там нет по имени.
$AGLSN = 'shr-db01'
 
$primaryReplica = Get-DbaAgReplica -SqlInstance $AGLSN | Where-Object Role -eq Primary
$secondaryReplicas = Get-DbaAgReplica -SqlInstance $AGLSN | Where-Object Role -eq Secondary

# Получение списка джобов на первичной реплике, исключая указанные системные задания
$JobsOnPrimary = Get-DbaAgentJob -SqlInstance $primaryReplica.Name -ExcludeJob 'syspolicy_purge_history', 'AlwaysOn_Latency_Data_Collection', 'dba_Monitoring_Long_Query_Execution', 'sp_WhoIsActive'

# Обработка каждой вторичной реплики
$secondaryReplicas | ForEach-Object {
    
    $JobsOnSecondary = Get-DbaAgentJob -SqlInstance $_.Name -ExcludeJob 'syspolicy_purge_history', 'AlwaysOn_Latency_Data_Collection', 'dba_Monitoring_Long_Query_Execution', 'sp_WhoIsActive'

    
    # Найдем джобы, которые есть на 
Читать далее

Как в always on mssql синхронизировать логины и пароль на вторичной реплики и удалять логины когда удалили на первичной.

Задача синхронизировать копировать логины с первичной реплики на вторичную и так же удалять логины на вторичной реплики если удалили логин на первичной.

Set-DbatoolsInsecureConnection -SessionOnly
$StartTime = (Get-Date)

$AGLSN = 'db01'
 
$primaryReplica = Get-DbaAgReplica -SqlInstance $AGLSN | Where-Object Role -eq Primary
$secondaryReplicas = Get-DbaAgReplica -SqlInstance $AGLSN | Where-Object Role -eq Secondary
$secondaryReplicas.name
# Получение логинов на первичной реплике
$LoginsOnPrimary = Get-DbaLogin -SqlInstance $primaryReplica.Name  -ExcludeSystemLogin

# Обработка каждой вторичной реплики
$secondaryReplicas | ForEach-Object {
    
    $LoginsOnSecondary = Get-DbaLogin  -SqlInstance $_.Name -ExcludeSystemLogin
    
    # Найдем логины, которые отсутствуют на вторичной реплике, но есть на первичной
    $diffToAdd = $LoginsOnPrimary | Where-Object Name -notin ($LoginsOnSecondary.Name)
    
    # Найдем 
Читать далее

Как разлогинеть (logoff) всех пользователей со статусом disconnect со всех серверов windows в domain.

Задача всех разогнать пользователей со статусом дисконект с серверов.

param (
    # Импортировать модуль Active Directory для Get-ADComputer CmdLet
    [string]$UserName = $null
)

# Импортировать модуль Active Directory
Import-Module ActiveDirectory

# Запрос Active Directory для включенных учетных записей компьютеров серверов Windows и сортировка по имени
$Servers = Get-ADComputer -Filter  {(OperatingSystem -like "*windows*server*") -and (Enabled -eq "True") } | Sort Name

#Get-ADComputer -Filter   {(Name -like "FS*") -and (Enabled -eq "True") } | Sort Name


 #{(OperatingSystem -like "*windows*server*") -and (Enabled -eq "True")
 


# Инициирующие переменные
$SessionList = $NULL
$queryResults = $NULL
$SError = $null
$SDown = $null
$z = 0

# Получить 
Читать далее

Как посмотреть кто залогинен на серверах в сети powershell

задача проверить кто активен на серверах в сети

# Список серверов
$servers = (Get-AdComputer  -properties lastLogonDate -Filter  {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' }).name
# Результаты
$loggedInUsers = @()

foreach ($server in $servers) {
    # Проверяем доступность сервера
    $ping = Test-Connection -ComputerName $server -Count 1 -Quiet
    
    if ($ping) {
        try {
            # Выполняем команду qwinsta на удаленном сервере
            $output = qwinsta /server:$server

            if ($null -eq $output) {
                Write-Host "Не удалось получить данные с сервера: $server"
                continue
            }

            # Получаем названия колонок и их позиции из заголовка
            $columns = [regex]::Matches($output[0],'(?<=\s)\w+')

            # Обрабатываем каждую строку, пропуская заголовок
            $output | Select-Object 
Читать далее

Как сделать gpo групповую политику через отпечаток пальца (biometrics) в доменe windows domen

задача включить биометрию для входа в домен через отпечаток пальца

Создаем группу для компьютеров g-pc biometrics

в политике добавляем ригистор

SOFTWARE\Policies\Microsoft\Windows\System
AllowDomainPINLogon
00000001

Как сделать gpo групповую политику через отпечаток пальца (biometrics) в доменe windows domen

item-level targeting

натравливаем на группу

Как сделать gpo групповую политику через отпечаток пальца (biometrics) в доменe windows domen

 

В политике

Administrative Templates\System\Logon
Turn on convenience PIN sign-in Enabled

Как сделать gpo групповую политику через отпечаток пальца (biometrics) в доменe windows domen

Administrative Templates\Windows Components\Biometrics
Allow domain users to log on using biometrics Enabled  
Allow users to log on using biometrics Enabled 

Как сделать gpo групповую политику через отпечаток пальца (biometrics) в доменe windows domen

Саму политику натравливаем на группу

Как сделать gpo групповую политику через отпечаток пальца (biometrics) в доменe windows domen

Яндекс.Метрика