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

Как узнать в exchange из Get-MessageTrackingLog емайл адреса ,извлечь емеил адреса из лога и проверить ящики включены и есть или переадресация.

Задача. есть почтовый домен. Надо избавиться от него и перенести адреса на другие почтовые сервера и сделать доверенный домен.
Сначала за 30 дней читаем логи. Распарсиваем их и забираем только event id send и recipients. Потом по ним проверяем есть ли ящик, включена переадресация и включена учетная запись или нет в ад.

# Подключение к Exchange PowerShell
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://MXS1.adminbd.ru/PowerShell/" -Authentication Kerberos
Import-PSSession $session


# Задаем период времени (30 дней назад до текущего момента)
$StartDate = (Get-Date).AddDays(-30)
$EndDate = Get-Date

# Получаем логи трекинга сообщений
$Logs = Get-MessageTrackingLog -Start $StartDate -End $EndDate -ResultSize Unlimited | 
    Select-Object 
Читать далее

Как настроить шифрование компьютеров на базе 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

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

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

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

Enforce drive encryption type on fixed data drives

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

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

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

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

 

Configure use of hardware-based encryption for operating system drives

 

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

 

Enforce drive encryption type on operating system drives

 

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

 

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

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

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

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

 

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

Сам Код 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

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

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

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

 

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 
Читать далее

Как искать текст в файле с помощью PowerShell и сохранить путь и строку где этот текст встречается.

Задача найти все строки подключения oracl в конфиге web серверов

# Укажите путь к директории для поиска
$directoryPath = "C:\Sites"
 
# Укажите путь для выходного CSV файла
$outputCsv = "C:\Results.csv"
 
# Выполняем поиск только в файлах .conf и .txt
Get-ChildItem -Path $directoryPath -Recurse -File -Include *.config, *.json | `
    Select-String -Pattern "OracleClient" | `
    Select-Object @{Name="FilePath";Expression={$_.Path}},
                  @{Name="LineNumber";Expression={$_.LineNumber}},
                  @{Name="LineContent";Expression={$_.Line}} |
    Export-Csv -Path $outputCsv -NoTypeInformation -Encoding UTF8 -Delimiter ";"
 
Write-Host "Результаты сохранены в $outputCsv"

Как искать текст в файле с помощью PowerShell и сохранить путь и строку где этот текст встречается.

Как в Mssql сделать новый файл файловой группы на новом диске H .

Задача в mssql добавить новый файл файловой группы на базах на новый диск H

Проверяем какие базы не имеют файлов на диске

SELECT
    DB_NAME(database_id) AS DatabaseName
FROM
    sys.master_files
WHERE
    database_id > 4 -- исключаем системные базы
GROUP BY
    database_id
HAVING
    SUM(CASE WHEN LEFT(physical_name, 1) = 'H' THEN 1 ELSE 0 END) = 0;

Создать команды для создания файла по всем базам.

-- Объявление переменных
DECLARE @Sql NVARCHAR(MAX);
DECLARE @DbName NVARCHAR(128);

-- Удаление временных таблиц, если они уже существуют
IF OBJECT_ID('tempdb..#DatabaseFG') IS NOT NULL DROP TABLE tempdb..#DatabaseFG;
IF OBJECT_ID('tempdb..#SysFiles') IS NOT NULL DROP TABLE tempdb..#SysFiles;
IF OBJECT_ID('tempdb..#DatabaseList') IS NOT NULL DROP 
Читать далее

Как сделать скрипт для бэкапа 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 какой запрос больше всего нагружает файловую систему.

Выросли очереди на диски на сервере базы данных mssql. Задача найти запросы топ по чтению с диска.

Нагрузка на диск на чтение

Как найти в mssql какой запрос больше всего нагружает файловую систему.

По графику видно что нагрузка выросла. Диски nvme и поменять на более производительные нет возможности

Запрос по топу чтения

WITH DB_Disk_Reads_Stats

AS

(SELECT DatabaseID, DB_Name(DatabaseID) AS [DatabaseName], SUM(total_physical_reads) AS [physical_reads]

 FROM sys.dm_exec_query_stats AS qs

 CROSS APPLY (SELECT CONVERT(int, value) AS [DatabaseID] 

              FROM sys.dm_exec_plan_attributes(qs.plan_handle)

              WHERE attribute = N'dbid') AS F_DB

 GROUP BY DatabaseID)

SELECT ROW_NUMBER() OVER(ORDER BY [physical_reads] DESC) AS [row_num],

       DatabaseName, [physical_reads], 

       CAST([physical_reads] * 1.0 / SUM([physical_reads]) OVER() * 100.0 AS DECIMAL(5, 2)) AS [Physical_Reads_Percent]

FROM DB_Disk_Reads_Stats

WHERE 
Читать далее

Как сделать архив почтового ящика exchange 2016 в pst перед удалением уз.

Задача сделать архив почтового ящика и архивов. Создать папку если нету , сделать логирование , проверку что почтовый ящик экспортировался в pst и отправить на api результат.

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://MXS01.adminbd.ru/PowerShell/ -Authentication Kerberos
Import-PSSession $Session -DisableNameChecking -AllowClobber



# Загрузка необходимых модулей
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
Import-Module ActiveDirectory

# Очистка памяти
[system.gc]::Collect()

#------ Переменные ------#
#исключение
$ExceptinUsers = 'sd','admins'
#
$OrgUnit      = "OU=Locations,DC=adminbd,DC=ru"
$domain       = "adminbd.ru"
$dt           = (Get-Date).AddDays(-30)
$Filter       = '(Enabled -eq $False) -and (Modified -le $dt)'
$dtstamp      = Get-Date -Format "yyyy-MM-dd-hh-mm-ss"
$dtstamp1     = "23012025_1"
$pattern      = '[/\\:?*<>"|]'
$exppath      = "\\ARC01\arc$\$dtstamp1"

# Создание директории для архивации
if (-not (Test-Path 
Читать далее
Яндекс.Метрика