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

fslogix

Как сделать автоматическую проверку и восстановление VHDX‑дисков FSLogix (NTFS) для RDS‑сессий

Назначение

Скрипт PowerShell предназначен для диагностики и автоматического исправления ошибок файловой системы на VHDX‑дисках FSLogix. Он выявляет пользователей, у которых активна RDS‑сессия, но профиль не смонтирован (том с меткой Profile-ИмяПользователя отсутствует), затем находит соответствующий VHDX‑файл в заданных сетевых хранилищах, монтирует его, проверяет с помощью chkdsk /f и при необходимости восстанавливает целостность NTFS.

Основные возможности

  • 🔎 Автоматический поиск проблемных сессий через RD Connection Broker.

  • 📁 Поддержка нескольких хранилищ VHDX (UNC‑пути).

  • 🧪 Безопасное монтирование образов без присвоения буквы (буква назначается временно только для проверки).

  • 🛠 Исправление ошибок NTFS с помощью chkdsk /f (режим можно отключить).

  • 📄 Подробное логирование и CSV‑отчёт о состоянии

Читать далее

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

Как найти битые профили 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 ДЛЯ ПОЛЬЗОВАТЕЛЕЙ 
Читать далее

Как найти на серверах 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
                
Читать далее

Как найти программу и версию с помощью powershell

Надо проверить установленную версию fslogix на серверах rds

<#
.SYNOPSIS
    Скрипт для проверки версий указанных программ на серверах AD с фильтрацией по имени
.DESCRIPTION
    Ищет указанную программу в реестре удаленных серверов и возвращает информацию о версии
.PARAMETER NameFilter
    Фильтр имен серверов (например, "*hwrdsh*")
.PARAMETER SoftwareName
    Название программы для поиска (например, "Microsoft FSLogix Apps")
.EXAMPLE
    .\Get-SoftwareVersionOnServers.ps1 -NameFilter "*hwrdsh*" -SoftwareName "Microsoft FSLogix Apps"
#>

param (
    [string]$NameFilter = "*hwrdsh*",
    [string]$SoftwareName = "Microsoft FSLogix Apps"
)

# Импорт модуля ActiveDirectory
try {
    Import-Module ActiveDirectory -ErrorAction Stop
}
catch {
    Write-Host "Ошибка при импорте модуля ActiveDirectory: $_" -ForegroundColor Red
    exit 1
}

# Функция 
Читать далее
Яндекс.Метрика