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

автор автор

Как завершить отключение сессии на серверах RDS и вывести список где пользователи не найдены на хостах но в брокере они есть.

 

 

# Функция для завершения RDP-сессии
function Invoke-RDPSessionLogoff {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName,
        [parameter(Mandatory=$true, Position=1)][String]$SessionID
    )
    $ErrorActionPreference = "Stop"
    logoff $SessionID /server:$ComputerName /v 2>&1
}

# Функция для получения списка залогиненных пользователей
Function Get-LoggedOnUser {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName="localhost"
    )
    $ErrorActionPreference = "Stop"
    Test-Connection $ComputerName -Count 1 | Out-Null
    quser /server:$ComputerName 2>&1 | Select-Object -Skip 1 | ForEach-Object {
        $CurrentLine = $_.Trim() -Replace "\s+"," " -Split "\s"
        $HashProps = @{
            UserName = $CurrentLine[0]
            ComputerName = $ComputerName
        }
        If ($CurrentLine[2] -eq "Disc") {
            $HashProps.SessionName = $null
            $HashProps.Id = $CurrentLine[1]
            $HashProps.State = $CurrentLine[2]
            $HashProps.IdleTime = $CurrentLine[3]
            $HashProps.LogonTime = $CurrentLine[4..6] -join " "
            $HashProps.LogonTime 
Читать далее

Как вывести список пользователей у которых не при монтировался диск 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. Фильтруем: 
Читать далее

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

Задача сделать для тп скрипт который опрашивает сервера по открытым портам , пингует их и делает tracert. И отправляет на почту результат.

# Добавьте в начало скрипта
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }

# Настройки Яндекс.Почты
$YandexTo = "moskvichev@yandex.ru" 
$YandexFrom = 'moskvichev@yandex.ru'
$YandexUser = "moskvichev@yandex.ru"
$YandexPass = "пароль из яндекс"
$YandexSmtpServer = 'smtp.yandex.ru'
$YandexPort = 587

# Получение информации о ПК и пользователе
$ComputerName = $env:COMPUTERNAME
$UserName = $env:USERNAME
$Domain = $env:USERDOMAIN

# Порты для проверки для каждого сервера
$ServerPorts = @{
    "vdi.adminbd.ru" = @(443)
    "zon01.adminbd.ru" = @(3389, 32111, 4172, 8443,443)
    "zon02.adminbd.ru" = @(3389, 32111, 4172, 8443,443)
}

# Функция для 
Читать далее

Как найти битые профили fslogix и найти профили которые не монтировались на сервер

Проблема что есть хосты на которых не монтируются профили надо найти какие профили не монтируются и почему

# === Настройки ===
$collectionName = "Farm Fxlogixs"
$connectionBroker = "RDCB02.adminbd.ru"
$fslogixRootUnc = "\\HWRDU\DisksfsFSLogix$"
$MaxDisksToCheck = 1000  # Проверяем только первые N проблемных дисков

# === Логирование ===
$LogDir = "$env:TEMP\FSLogixVHDXCheck"
if (-not (Test-Path $LogDir)) { New-Item -Path $LogDir -ItemType Directory -Force | Out-Null }
$LogPath = "$LogDir\FSLogix_VHDX_Check_$(Get-Date -Format 'yyyy-MM-dd_HH-mm-ss').log"

function Write-Log {
    param([string]$Message, [string]$Level = "INFO")
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $logEntry = "[$timestamp] [$Level] $Message"
    Write-Host $logEntry
    Add-Content -Path $LogPath -Value $logEntry
}

Write-Log "=== НАЧАЛО ПРОВЕРКИ VHDX ДЛЯ ПОЛЬЗОВАТЕЛЕЙ 
Читать далее

Как автоматизировать установку horizon client на пк пользователей не в домене

Задача установить клиента с подключением powershell

#requires -Version 3.0

<#
.SYNOPSIS
    Автоматический запуск VMware Horizon Client с установкой при необходимости.
.DESCRIPTION
    Скрипт проверяет доступность VDI-сервера, наличие клиента,
    при отсутствии — скачивает и устанавливает его, затем запускает подключение.
#>

$ErrorActionPreference = "Stop"
$ProgressPreference = "SilentlyContinue"

# === Настройки ===
$Server = "vdi.admin.ru"
$InstallerUrl = "https://$Server/portal/downloads/VMware-Horizon-Client-2406.exe"
$InstallerPath = "$env:TEMP\VMware-Horizon-Client-2406.exe"
$ClientPath = "${env:ProgramFiles}\VMware\VMware Horizon View Client\vmware-view.exe"
$LogPath = "$env:TEMP\vdi-client-setup.log"

# === Функция логирования ===
function Write-Log {
    param(
        [string]$Message,
        [ValidateSet("Info", "Warning", "Error", "Success", "Debug")]
        [string]$Type = "Info"
    )

    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $logEntry = "[$timestamp] [$Type] $Message"

    # Запись в файл
    
Читать далее

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

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

Если версия mssql до 2016

Создайте пользовательскую функцию (если нет)

IF OBJECT_ID('dbo.SplitString', 'TF') IS NOT NULL
    DROP FUNCTION dbo.SplitString;
GO

CREATE FUNCTION dbo.SplitString
(
    @Input NVARCHAR(MAX),
    @Delimiter NCHAR(1)
)
RETURNS @Output TABLE (
    Value NVARCHAR(4000)
)
AS
BEGIN
    IF @Input IS NULL RETURN;

    DECLARE @Start INT = 1, @End INT;

    WHILE @Start <= LEN(@Input)
    BEGIN
        SET @End = CHARINDEX(@Delimiter, @Input, @Start);
        IF @End = 0 
            SET @End = LEN(@Input) + 1;

        INSERT INTO @Output (Value)
        VALUES (LTRIM(RTRIM(SUBSTRING(@Input, @Start, @End - @Start))));

        SET @Start = @End + 1;
    END

    RETURN;
Читать далее

Как перенести активных пользователей из одной коллекции в другую 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 = 
Читать далее

Как вывести список пользователей 1с какую лицензию hasp использует пользователь.

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

$RPHostPath = Get-Process -Name rphost | Select-Object -ExpandProperty Path -First 1
$Actual1CFolder = Split-Path $RPHostPath
Set-Location $Actual1CFolder

$cluster = .\rac.exe cluster list | Where-Object { $_ -match 'cluster' } | ForEach-Object { $_ -replace "^.*?: " }

$sessions = .\rac.exe session --cluster=$cluster list --licenses

# Парсим вывод rac.exe и преобразуем в объекты PowerShell
$sessionObjects = @()
$currentSession = @{}

foreach ($line in $sessions) {
    if ($line -match '^session\s*:\s*(.+)') {
        if ($currentSession.Count -gt 0) {
            $sessionObjects += [PSCustomObject]$currentSession
            $currentSession = @{}
        }
        $currentSession['Session'] = $matches[1].Trim()
    }
    elseif ($line -match '^(.+?)\s*:\s*(.+)') 
Читать далее
Яндекс.Метрика