PowerShell · 14.12.2022

Остались только диски 2.0

Наконец-то привёл в порядок вот этот скрипт. Поправлена ошибка из прошлой версии скрипта, возникающая на этапе сверки списка виртуальных дисков после перемещения целевого.

Теперь лог стал более информативным и пишется в файл по указанному пути в переменной $reportfile.

### Директории ###
$diskpath = "\\RDS\c$\Profiles\"
$backpath = "\\RDS\c$\Profiles\VHDXDISABLE"
$reportfile = "\\RDS\c$\Profiles\VHDXDISABLE\_report.txt"

### Импорт модулей ###
Import-Module activedirectory

### Создание папки для перемещения ###
New-Item -Path $backpath -ItemType Directory -ErrorAction Ignore | Out-Null

### Получение списка отключенных пользователей и их SID ###
$load = Get-AdUser -Filter * | where 'Enabled' -eq $False | Sort-Object -Property Name | ft SID -HideTableHeaders | Out-String -Stream | where { $_.Trim().Length -gt 0 }

### Добавление префикса и расширения ###
$files = $load | foreach {$diskpath + "UVHD-" + $_ + ".vhdx"}

### Цикл перемещения дисков отключенных пользователей ###
foreach ($file in $files)
{ 
    $testfile = Test-Path -Path $file
    if ($testfile)
    {
        try 
        {
            # Перемещение виртуального диска #
            Write-Host "Обнаружен файл виртуального диска $file" -ForegroundColor Green
            Move-Item -Path $file -Destination $backpath -ErrorAction Stop
            Write-Host "Файл $file успешно перемещён!" -ForegroundColor Green
            # Запись файла отчёта #
            $datetime = Get-Date -Format "yyyy-MM-dd - HH:mm:ss"
            $report = "$datetime | + | Перемещён файл $file" >> $reportfile
        }
        catch
        {
            # Вывод данных об ошибке #
            Write-Host "Ошибка перемещения файла виртуальной диска $file!" -ForegroundColor Red
            $PSItem.Exception
            # Запись файла отчёта #
            $datetime = Get-Date -Format "yyyy-MM-dd - HH:mm:ss"
            $report = "$datetime | - | Не удалось переместить файл $file" >> $reportfile
        }
    }
}

### Ожидание действий ###
Write-Host
Read-Host "Нажмите Enter для выхода..."

Если потребуется тихая автоматизация процесса — удалите блок ожидания действий.