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

windows

Как вывести размер всех баз mssql

SELECT 
    DB_NAME(database_id) AS 'Database Name',
    REPLACE(CONVERT(VARCHAR, CAST(SUM(size) * 8.0 / 1024 AS DECIMAL(10,2)), 111), '.', ',') AS 'Size_MB',
    REPLACE(CONVERT(VARCHAR, CAST(SUM(size) * 8.0 / 1048576 AS DECIMAL(10,2)), 111), '.', ',') AS 'Size_GB',
    REPLACE(CONVERT(VARCHAR, CAST(SUM(size) * 8.0 / 1073741824 AS DECIMAL(10,2)), 111), '.', ',') AS 'Size_TB'
FROM sys.master_files
GROUP BY database_id
ORDER BY SUM(size) * 8.0 / 1024 DESC;

 

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

Скрипт ищет пользователей у которых не с монтировался профил fslogix и переиеновать диски User Disk по стандарту. User disc появился из за миграции профилей из UDP windows

# === Настройки ===
$collectionName = "Fxlogixs"
$connectionBroker = "HWRDCB.adminbd.ru"

# === 1. Получаем все сессии из коллекции ===
Write-Host "Получение сессий из коллекции '$collectionName' через брокер '$connectionBroker'..." -ForegroundColor Cyan
try {
    $sessions = Get-RDUserSession -CollectionName $collectionName -ConnectionBroker $connectionBroker -ErrorAction Stop
} catch {
    Write-Error "❌ Ошибка при получении сессий: $($_.Exception.Message)"
    exit 1
}

if (-not $sessions) {
    Write-Host "ℹ️ Нет сессий в коллекции." -ForegroundColor Green
    exit 0
}

# === 2. Фильтруем: 
Читать далее

Как перенести активных пользователей из одной коллекции в другую windows rds

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

# Import required modules
Import-Module ActiveDirectory
Import-Module RemoteDesktop

# Define RDS collection and groups
$collectionName = "Rec"
$sourceGroup = "G-Rec"
$destinationGroup = "G-Rec-fslogix"
$userLimit = 1 # Количество пользователей для переноса

# Get active users from RDS collection
try {
    Write-Host "Getting active users from RDS collection '$collectionName'..."
    $activeSessions = Get-RDUserSession -CollectionName $collectionName -ConnectionBroker MSK-HWRDCB02.voxys.ru
    
    if (-not $activeSessions) {
        Write-Host "No active sessions found in collection."
        exit
    }
    
    $activeUsers = $activeSessions | Select-Object -ExpandProperty UserName 
Читать далее

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

# Define group names
$sourceGroup = "G-Rec"
$destinationGroup = "G-Rec-fslogix"

# Import Active Directory module
Import-Module ActiveDirectory

try {
    # Get members from source group (first 50)
    $users = Get-ADGroupMember -Identity $sourceGroup | Select-Object -First 50
    
    if ($users.Count -eq 0) {
        Write-Host "No users found in the source group."
        exit
    }
    
    Write-Host "Found $($users.Count) users in the source group. Processing..."
    
    # Add users to destination group
    Add-ADGroupMember -Identity $destinationGroup -Members $users -ErrorAction Stop
    Write-Host "Successfully added users to destination group $destinationGroup"
    
    # Remove users from source group
    Remove-ADGroupMember -Identity $sourceGroup -Members $users -Confirm:$false -ErrorAction Stop
    Write-Host "Successfully removed users from 
Читать далее

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

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

-- Удаляем временную таблицу, если существует
IF OBJECT_ID('tempdb..#Permissions') IS NOT NULL
    DROP TABLE #Permissions;

-- Создаём временную таблицу для результатов
CREATE TABLE #Permissions (
    DatabaseName SYSNAME,
    LoginName NVARCHAR(256),
    UserInDB NVARCHAR(256),
    DatabaseRole NVARCHAR(256)
);

-- Динамически проверяем все базы данных
EXEC sp_MSforeachdb '
USE [?];
INSERT INTO #Permissions (DatabaseName, LoginName, UserInDB, DatabaseRole)
SELECT 
    ''?'' AS DatabaseName,
    sp.name AS LoginName,
    dp.name AS UserInDB,
    ISNULL(dr.name, ''Public role or no role'') AS DatabaseRole
FROM sys.database_principals dp
JOIN sys.server_principals sp ON dp.sid = sp.sid
LEFT JOIN sys.database_role_members drm ON dp.principal_id = 
Читать далее

Как найти на серверах rds rdp ферме профили которые в статусе fslogix WaitingForWriteQueueFlush

На хостах терминальной фермы есть проблема что процесс fslogix держит cloud  profile

# Имя коллекции RDS, замените на своё
$collectionName = "Farm Fxlogixs"

# Получаем список серверов из коллекции (только имена)
$servers = Get-RDSessionHost -CollectionName $collectionName | Select-Object -ExpandProperty SessionHost

# Результаты
$result = @()

foreach ($server in $servers) {
    Write-Host "Подключаемся к серверу: $server" -ForegroundColor Cyan

    try {
        $disks = Invoke-Command -ComputerName $server -ScriptBlock {
            # Попытка получить диски FSLogix, которые ожидают записи
            Get-CloudCacheDisk
        } -ErrorAction Stop

        foreach ($disk in $disks) {
            if ($disk.State -eq "WaitingForWriteQueueFlush") {
                $result += [PSCustomObject]@{
                    Server      = $server
                    UserProfile = $disk.CachePath
                    State       = $disk.State
                
Читать далее

Как разблокировать (unblock) файл скаченный из сети на серверах в ad

Задача разблокировать файл на определённых сервера

# Импортируем модуль ActiveDirectory, если он не установлен
if (-not (Get-Module -ListAvailable -Name ActiveDirectory)) {
    Install-Module -Name ActiveDirectory -Force
}
Import-Module ActiveDirectory
 
# Фильтруем компьютеры, которые являются серверами (например, по имени или OU)
$servers = Get-ADComputer -Filter {name -like "*HWRDS*"} -Property Name | Select-Object -ExpandProperty Name
 
# Список файлов для разблокировки
$filesToUnlock = @("Zone.exe") # Добавьте здесь нужные вам файлы
 
function UnBlock-FilesOnRemoteServers {
    param (
        [string[]]$servers,
        [string[]]$files
    )
 
    foreach ($server in $servers) {
        Write-Host "Processing server: $server"
         
        # Убедимся, что сервер доступен
        if (Test-Connection -ComputerName $server -Count 1 -Quiet) {
            foreach ($file in $files) 
Читать далее

Как с помощью PowerShell посчитать сколько пользователей входит в группу где много вложенных групп

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

Import-Module ActiveDirectory

$mainGroup = "G-Terminal"
$global:allResults = @() # Используем глобальную переменную
$groupCache = @{}

function Get-GroupInfo {
    param (
        [string]$groupName,
        [string]$parentGroup = "",
        [int]$level = 0
    )
    
    # Проверяем кэш
    if ($groupCache.ContainsKey($groupName)) {
        return $groupCache[$groupName]
    }

    try {
        $group = Get-ADGroup -Identity $groupName -Properties Member
        $members = @(Get-ADGroupMember -Identity $groupName -ErrorAction Stop)
        
        $userCount = 0
        $nestedGroups = @()
        $totalUsers = 0

        # Считаем пользователей и вложенные группы
        foreach ($member in $members) {
            if ($member.objectClass -eq 'user') {
                $userCount++
            }
            elseif ($member.objectClass -eq 'group') {
                $nestedGroups += $member
            
Читать далее

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

Первый скрипт 

Задача сделать синхронизацию логинов с праймери реплики в mssql на секондори реплики с проверкой паролей совпадают или нет . если не совпадают то скопировать логин с правильным паролем. Сделал проверку по хэшу паролей. Лог будет удаляться из папки старше 7 дней

Set-DbatoolsInsecureConnection -SessionOnly
# Параметры
$AGListenerName = "db01" # Имя листенера группы доступности
$LogFolder = "D:\DBA_scripts_AG\log"
$MaxLogAge = 7 # Максимальный возраст логов в днях

# Создаем папку для логов если не существует
if (-not (Test-Path $LogFolder)) {
    New-Item -ItemType Directory -Path $LogFolder -Force | Out-Null
}

# Удаляем старые логи (старше 7 дней)
Get-ChildItem -Path $LogFolder  | 
Читать далее

Как с помощью PowerShell скопировать remote app из одной коллекции в другую.

Задача создать коллекцию windows rds  и скопировать все приложения в неопубликованном виде все приложения remote app для дальнейшего использования.

$remoteApps=get-RDRemoteApp -ConnectionBroker HWRDC.adminbd.ru -CollectionName farm | Where-Object {$_.ShowInWebAccess -like "true" }


$remoteApps | ft -AutoSize


# Создаем новую переменную с измененным значением ShowInWebAccess
$newRemoteApps = $remoteApps | ForEach-Object {
    [PSCustomObject]@{
        CollectionName        = $_.CollectionName
        Alias                = $_.Alias
        DisplayName          = $_.DisplayName
        FilePath             = $_.FilePath
        ShowInWebAccess      = $false  # Меняем значение на False
        CommandLineSetting   = $_.CommandLineSetting
        RequiredCommandLine  = $_.RequiredCommandLine
        UserGroups           = $_.UserGroups
    }
}

# Проверяем результат
$newRemoteApps 


$farmfslogix=get-RDRemoteApp -ConnectionBroker hWRDC.adminbd.ru  -CollectionName 'Farm Fxlogixs' | Where-Object {$_.ShowInWebAccess -like "False" }




$missingApps = $newRemoteApps | 
Читать далее
Яндекс.Метрика