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

Как искать текст в файле с помощью 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 
Читать далее

Как добавить всем пользователем событие на целый день в календаре exchange 2016 через EWS.

Задача всем пользователям сделать событие в календаре занят на целый день каждую среду в течении года. Сделал скрипт на PowerShell через ews. exchange 2016.

По умолчанию в exchange 2016  есть ews его ставить нет необходимости если скрипт запустить с самого сервера exchange. Путь “C:\Program Files\Microsoft\Exchange Server\V15\Bin\Microsoft.Exchange.WebServices.dll

Если запускать с другого места надо установить ews

Install-Package Exchange.WebServices.Managed.Api

Путь C:\Program Files\PackageManagement\NuGet\Packages\Exchange.WebServices.Managed.Api.2.2.1.2\lib\net35

Добавить прав на exchange от кого будете запускать скрипт

Get-ManagementRoleAssignment -Role ApplicationImpersonation
New-ManagementRoleAssignment –Name:ImpersonationAssignment –Role:ApplicationImpersonation –User:moskvichev@adminbd.ru

Сам скрипт

Add-Type -Path "C:\Program Files\Microsoft\Exchange Server\V15\Bin\Microsoft.Exchange.WebServices.dll"

# Учетные данные администратора
$AdminEmail = "moskvichev@adminbd.ru"
$Password = "pass"
$Creds = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials($AdminEmail, $Password)

# Подключение к 
Читать далее

Как распространить reg файл на сервера.

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

# Получите список серверов
$servers = Get-ADComputer -Filter 'Name -like "*H08*"' -SearchBase 'OU=Servers,DC=ADMINBD,DC=ru' | Select-Object -ExpandProperty Name

if (-not $servers) {
    Write-Host "Не найдено серверов, соответствующих фильтру." -ForegroundColor Red
    return
}

# Проверяем существование файла
if (-not (Test-Path $SharedRegFilePath)) {
    Write-Host "Файл не найден: $SharedRegFilePath" -ForegroundColor Red
    return
}

foreach ($server in $servers) {
    Write-Host "Обрабатывается сервер: $server" -ForegroundColor Cyan

    try {
        # Локально копируем файл на удаленный сервер
        $destinationPath = "\\$server\C$\Temp\tcagent.reg"
        if (-not (Test-Path "\\$server\C$\Temp")) {
            New-Item -ItemType Directory -Path "\\$server\C$\Temp"
        }

        Copy-Item -Path $SharedRegFilePath -Destination $destinationPath -Force
        
Читать далее

Как сгенерировать скрипт AUTOGROW включить автоматического увеличения всех файлов

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 TABLE tempdb..#DatabaseList;
 
-- Создание временных таблиц
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),
    FreeSpaceMB DECIMAL(18, 2)
);
 
CREATE TABLE #DatabaseList (
    DatabaseName NVARCHAR(128)
);
 
-- Курсор для обхода баз данных
DECLARE db_cursor CURSOR FOR
SELECT name
FROM sys.databases
WHERE name 
Читать далее

Как сгенерировать скрипт для создание файловых групп

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 TABLE tempdb..#DatabaseList;
 
-- Создание временных таблиц
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),
    FreeSpaceMB DECIMAL(18, 2)
);
 
CREATE TABLE #DatabaseList (
    DatabaseName NVARCHAR(128)
);
 
-- Курсор для обхода баз данных
DECLARE db_cursor CURSOR FOR
SELECT name
FROM sys.databases
WHERE name 
Читать далее

Как вывести размер всех баз в 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),
    
Читать далее
Яндекс.Метрика