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

windows

Как настроить шифрование компьютеров на базе win 10 — 11 в Active Directory с помощью BitLocker , gpo и PowerShell c сохранением ключей

Задача включить шифрование с сохранением ключей в ad на Windows 10 и 11.

Сделал gpo bitlocker pc. Включил в gpo
Computer Configuration (Enabled) —  Policies -Administrative Templates
Windows Components/ BitLocker Drive Encryption

Windows Components/ BitLocker Drive Encryption/ Fixed Data Drives
Choose how BitLocker-protected fixed drives can be recovered Enabled

Enforce drive encryption type on fixed data drives

Windows Components/ BitLocker Drive Encryption/ Operating System Drives
Choose how BitLocker-protected operating system drives can be recovered

 

Configure use of hardware-based encryption for operating system drives

 

 

Enforce drive encryption type on operating system drives

 

 

Require additional authentication at … Читать далее

Как делегировать права для группы на ou для создание пользователей через powershell.

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

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

# Определяем путь к OU
$ouPath = "AD:\OU=User Create ,OU=Users,OU=Locations,OU=Locations,DC=adminbd,DC=ru"

# Получаем текущий ACL для OU
$acl = Get-Acl $ouPath

# Указываем имя группы или пользователя
$groupName = "G-Create User"
$groupSID = (Get-ADGroup -Identity $groupName).SID

# Преобразуем SID в формат DOMAIN\AccountName
$identityReference = $groupSID.Translate([System.Security.Principal.NTAccount])

# Создаем ACE для прав ReadProperty, WriteProperty, ReadControl, WriteDacl
$ace1 = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
    $groupSID,
    [System.DirectoryServices.ActiveDirectoryRights] "ReadProperty, WriteProperty, ReadControl, WriteDacl",
    [System.Security.AccessControl.AccessControlType] "Allow",
    [Guid]::Empty,
    [System.DirectoryServices.ActiveDirectorySecurityInheritance] "All"
)

# Создаем ACE для CreateChild, DeleteChild (для объектов типа User)
$ace2 = 
Читать далее

Как импортировать сертификат для компьютера в личное (personal\my) хранилище сертификатов с помощью sccm.

Задача импортировать сертификат в личное хранилище компьютера через gpo этого сделать нельзя. Делаю через sccm packages.

Создаем packages

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File ".\Install-Certificate.ps1"

 

Сам Код Install-Certificate.ps1

# Computer name
$computerName = $env:COMPUTERNAME

# Start transcript logging
Write-Output "# Start transcript logging"
Start-Transcript -Path "\\путь\transcript_$computerName.txt" -Force

# Path to the certificate file
$certPath = "\\путь\srv.vpnpc.pfx"

#$password = "пароль"
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($password))


# Encoded password in Base64
$encodedPassword = "пароль" # This is "пароль" encoded in Base64

# Decode the password from Base64 and convert it to a secure string
$passwordBytes = [System.Convert]::FromBase64String($encodedPassword)
$passwordPlainText = [System.Text.Encoding]::UTF8.GetString($passwordBytes)
$password = $passwordPlainText | ConvertTo-SecureString -AsPlainText -Force

Читать далее

Как импортировать сертификат для компьютера в личное (personal\my) хранилище сертификатов.

Задача сделать импорт pfx сертификата в личное хранилище \LocalMachine\My

Сделал gpo task scheduled

 

Program

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Argument:

-ExecutionPolicy Bypass -File "\\путь\Install-Certificate.ps1"

Сам  Install-Certificate.ps1

# Computer name
$computerName = $env:COMPUTERNAME

# Start transcript logging
Write-Output "# Start transcript logging"
Start-Transcript -Path "\\путь\transcript_$computerName.txt" -Force

# Path to the certificate file
$certPath = "\\путь\Certificate_Deployment\pc.pfx"

#$password = "пароль"
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($password))


# Encoded password in Base64
$encodedPassword = "пароль" # This is "пароль" encoded in Base64

# Decode the password from Base64 and convert it to a secure string
$passwordBytes = [System.Convert]::FromBase64String($encodedPassword)
$passwordPlainText = [System.Text.Encoding]::UTF8.GetString($passwordBytes)
$password = $passwordPlainText | ConvertTo-SecureString -AsPlainText -Force

# Task name in 
Читать далее

Как сделать скрипт для бэкапа mssql что бы следить что фуул лежит в том же месте что и новое место.

Задача сделать скрипт который будет проверять если ли фулл бэкап в заданной директории .

Процедура используется SQL Server Backup ola.hallengren

 

-- Объявляем переменные
DECLARE @BackupDirectory NVARCHAR(500) = N'\\ARC03\sql_backup$';
DECLARE @DatabaseList NVARCHAR(MAX) = ''; -- Список баз для бэкапа
DECLARE @DatabaseName NVARCHAR(128);
DECLARE @LastFullBackupPath NVARCHAR(500);
DECLARE @LastFullBackupDate DATETIME;

-- Курсор для перебора всех пользовательских баз данных
DECLARE db_cursor CURSOR FOR
SELECT name
FROM sys.databases
WHERE database_id > 4 -- Исключаем системные базы данных
AND state = 0; -- Только базы в режиме ONLINE

-- Открываем курсор
OPEN db_cursor;

-- Перебираем базы данных
FETCH NEXT FROM db_cursor INTO @DatabaseName;

WHILE @@FETCH_STATUS 
Читать далее

Как вывести размер всех баз в mssql с файловыми группами и Space Use Free Space Свободное место

DECLARE @Sql NVARCHAR(MAX)
DECLARE @DbName NVARCHAR(128)
 
-- Курсор для обхода баз данных
DECLARE db_cursor CURSOR FOR
SELECT name
FROM sys.databases
WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb') AND state_desc = 'ONLINE' -- Исключаем системные базы данных
 
-- Удаление временных таблиц, если они уже существуют
IF OBJECT_ID('tempdb..#DatabaseFG') IS NOT NULL
BEGIN
    DROP TABLE tempdb..#DatabaseFG;
END

IF OBJECT_ID('tempdb..#SysFiles') IS NOT NULL
BEGIN
    DROP TABLE tempdb..#SysFiles;
END
 
-- Создание временных таблиц
CREATE TABLE #DatabaseFG (
    DatabaseName NVARCHAR(128),
    FG_name NVARCHAR(128),
    data_space_id INT,
    type NVARCHAR(128),
    is_default INT,
    is_autogrow_all_files INT
);

CREATE TABLE #SysFiles (
    DatabaseName NVARCHAR(128),
    FileName NVARCHAR(128),
    FileSizeMB DECIMAL(18, 2),
    SpaceUsedMB DECIMAL(18, 2),
    
Читать далее

Как распространить reg файл на контролёры домена с помощью powershell

Задача импортировать ветку реестра на контролёры домена

# Задайте UNC-путь к reg-файлу в общей папке
$SharedRegFilePath = "\\rd\1$\dc.reg"

# Получите список контроллеров домена
$DomainControllers = Get-ADDomainController -Filter  *  | Where-Object -Property HostName -notlike shr*  | Select-Object -ExpandProperty HostName 

# Импортируем reg-файл на каждом контроллере домена
foreach ($DC in $DomainControllers) {
    Write-Host "Обрабатывается контроллер домена: $DC" -ForegroundColor Cyan

    # Выполняем reg import с использованием сетевого пути
    Invoke-Command -ComputerName $DC -ScriptBlock {
        param($FilePath)
        Start-Process -FilePath "reg.exe" -ArgumentList "import $FilePath" -Wait -NoNewWindow
        Write-Host "Файл реестра успешно импортирован: $FilePath" -ForegroundColor Green
    } -ArgumentList $SharedRegFilePath
}

Write-Host "Применение reg-файла завершено на всех контроллерах домена." -ForegroundColor 
Читать далее

Как удалить сохранённые пароли из windows.

Задача удалить сохранённые пароли из windows от пользователя

первый вариант

# Получаем все строки из cmdkey
$credentials = cmdkey /list

$searchTerm = "adminbd"
# Переменная для хранения целевых ресурсов
$target = ""

# Проходим по всем строкам и ищем нужные
foreach ($cred in $credentials) {
    Write-Host "Текущая строка: $cred"  # Выводим каждую строку для диагностики
    
    # Если строка содержит "Target", сохраняем целевой ресурс
    if ($cred -match "Target: (.*)") {
        $target = $matches[1].Trim()
        Write-Host "Найден целевой ресурс: $target"
    }

    # Если строка содержит $searchTerm, то удаляем соответствующий целевой ресурс
    if ($cred -match $searchTerm) {
        Write-Host "Найдена строка с tcell: $cred"  # 
Читать далее

Как разлогинеть (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

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

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

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

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

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

SOFTWARE\Policies\Microsoft\Windows\System
AllowDomainPINLogon
00000001

item-level targeting

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

 

В политике

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

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

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

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