Наконец-то привёл в порядок вот этот скрипт. Поправлена ошибка из прошлой версии скрипта, возникающая на этапе сверки списка виртуальных дисков после перемещения целевого.
Теперь лог стал более информативным и пишется в файл по указанному пути в переменной $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 для выхода..."
Если потребуется тихая автоматизация процесса — удалите блок ожидания действий.