📝 Для автоматического логирования всех команд, которые запускаются в PowerShell консоли и/или запускаемых PS1 скриптов в Windows, можно использовать встроенную функцию логирования.
✅ Для запуска/остановки записи всех команд и результатов (всего, что выводится в консоль) из текущего сеанса PowerShell в текстовый файл используются командлеты Start-Transcript и Stop-Transcript. По умолчанию логи пишутся в текстовый файл в профиле пользователя (
✅ С помощью параметра Turn on PowerShell Transcription в групповых политиках можно включить автоматическое логирование всех запускаемых PowerShell команд/скриптов на компьютере.
Добавляем логирование в PowerShell скрипты
✅ Для запуска/остановки записи всех команд и результатов (всего, что выводится в консоль) из текущего сеанса PowerShell в текстовый файл используются командлеты Start-Transcript и Stop-Transcript. По умолчанию логи пишутся в текстовый файл в профиле пользователя (
%userprofile%\Documents
). Можно указать произвольный файл лога (допустимо хранить его во внешней сетевой папке на сервере для централизованного сбора ).✅ С помощью параметра Turn on PowerShell Transcription в групповых политиках можно включить автоматическое логирование всех запускаемых PowerShell команд/скриптов на компьютере.
Добавляем логирование в PowerShell скрипты
🖨Одной из распространённых проблем при использовании терминального сервера Windows (RDS), на который пробрасываются локальные принтеры с компьютеров пользователей, заключается в большом количестве неактивных TS портов печати от перенаправленных принтеров (Inactive TS Port), которые накапливаются со временем. Все это вызывает проблемы с производительностью RDSH хоста, пропаданию перенаправленных принтеров в сессиях пользователей и другим проблем со службой печати на терминале. Проблема плавающая и проявляется в первую очередь на RDS хостах с большим количеством сеансов (40+).
✅Для предотвращения таких проблем с печатью на терминальных серверах можно использовать следующие подходы:
🔹Пробрасывать с компьютера в RDP сессию пользователю только один принтер, назначенный по умолчанию (настраивается политикой). Это уменьшит количество создаваемых портов печати.
🔹С какой-то периодичностью скриптом очищать неактивные порты
🔹Регулярно перезагружать RDS хост. Это очищает TS порты печати.
Неактивные TS порты принтеров на RDS сервере
✅Для предотвращения таких проблем с печатью на терминальных серверах можно использовать следующие подходы:
🔹Пробрасывать с компьютера в RDP сессию пользователю только один принтер, назначенный по умолчанию (настраивается политикой). Это уменьшит количество создаваемых портов печати.
🔹С какой-то периодичностью скриптом очищать неактивные порты
🔹Регулярно перезагружать RDS хост. Это очищает TS порты печати.
Неактивные TS порты принтеров на RDS сервере
📏 По умолчанию при подключении к RDP сессии на Windows Server встроенным клиентом mstsc.exe, настройки масштабирования удаленного рабочего стола наследуются с компьютера клиента. Изменить настройки масштабирования в RDP сессии нельзя. Такое поведение может вызвать жалобы от пользователей с мониторами HiDPI (4к) на слишком мелкие (или наоборот слишком большие) шрифты, значки, тексты и другие элементы UI в окне удаленного рабочего стола.
✅ В Windows Server 2019,2016 можно отключить наследование настроек масштабирования с клиента с помощью параметра реестра IgnoreClientDesktopScaleFactor:
После этого можно задать параметры масштабирования в сессии пользователя через параметр LogPixels. Например, для 200% масштабирования нужно создать параметр со значением 192:
🚫 В Windows Server 2022 и 2025 параметр IgnoreClientDesktopScaleFactor не работает (игнорируется), и параметры масштабирования рабочего стола DPI всегда берутся с клиента. Поэтому приходится на клиенте задавать настройки масштабирования, которые хорошо выглядят и на локальном компьютере, и в RDP сессии, либо использовать альтернативный RDP клиент.
Размер шрифта и масштабирование экрана в RDP (RDS) сессии
✅ В Windows Server 2019,2016 можно отключить наследование настроек масштабирования с клиента с помощью параметра реестра IgnoreClientDesktopScaleFactor:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations" /f /v IgnoreClientDesktopScaleFactor /t REG_DWORD /d 1
После этого можно задать параметры масштабирования в сессии пользователя через параметр LogPixels. Например, для 200% масштабирования нужно создать параметр со значением 192:
reg add "HKCU\Control Panel\Desktop" /f /v LogPixels /t REG_DWORD /d 192
🚫 В Windows Server 2022 и 2025 параметр IgnoreClientDesktopScaleFactor не работает (игнорируется), и параметры масштабирования рабочего стола DPI всегда берутся с клиента. Поэтому приходится на клиенте задавать настройки масштабирования, которые хорошо выглядят и на локальном компьютере, и в RDP сессии, либо использовать альтернативный RDP клиент.
Размер шрифта и масштабирование экрана в RDP (RDS) сессии
🪟В новой статье мы собрали основные рекомендации, которые могут быть полезны при развертывании Windows Server в виртуальной машине на гипервизоре Proxmox VE.
✅ Были рассмотрены типовые настройки виртуального оборудования, установка драйверов VirtIO, а также другие аспекты, которые позволят добиться стабильности и быстродействия Windows ВМ в среде Proxmox.
Базовые рекомендации по развертыванию Windows в виртуальной машине Proxmox
✅ Были рассмотрены типовые настройки виртуального оборудования, установка драйверов VirtIO, а также другие аспекты, которые позволят добиться стабильности и быстродействия Windows ВМ в среде Proxmox.
Базовые рекомендации по развертыванию Windows в виртуальной машине Proxmox
⚙️ В свежем релизе Proxmox VE 8.4 появилась возможность монтировать общие директории с хоста в виртуальные машины через файловую систему VirtioFS. Это позволяет виртуальным машинам напрямую получать доступ к директориям и папкам на локальном хосте без использования сетевых протоколов типа SMB или NFS.
✅ Принцип работы довольно простой:
1️⃣Создаем на Proxmox общую папку в разделе Datacenter -> Directory Mappings
2️⃣ Добавляем виртуальное устройство в VirtioFS в ВМ
3️⃣ Монтируем общую директорию с хоста в ВМ. В гостевых Linux поддержка virtiofs есть на уровне ядра, а в Windows придется установить драйвер VirtioFS (входит в образ virtio-win-.iso) и утилиту WinFsp для монтирования файловой системы.
Как настроить общие папки в Proxmox для доступа из ВМ через VirtioFS
✅ Принцип работы довольно простой:
1️⃣Создаем на Proxmox общую папку в разделе Datacenter -> Directory Mappings
2️⃣ Добавляем виртуальное устройство в VirtioFS в ВМ
3️⃣ Монтируем общую директорию с хоста в ВМ. В гостевых Linux поддержка virtiofs есть на уровне ядра, а в Windows придется установить драйвер VirtioFS (входит в образ virtio-win-.iso) и утилиту WinFsp для монтирования файловой системы.
Как настроить общие папки в Proxmox для доступа из ВМ через VirtioFS
Оптимизация настроек профилей, загружаемых модулей и окружения для более быстрого запуска PowerShell
⏳ На разных компьютерах периодически встречаю проблему очень долгого запуска консоли PowerShell, вплоть до нескольких минут. Это влияет как на запуск самой командной оболочки powershell.exe/pwsh.exe, так и на время выполнения PowerShell скриптов (бывает критично для логон скриптов).
⚙️ Измерить время чистого запуска оболочки powershell.exe в текущем профиле:
Основные причины долгого запуска оболочки PowerShell:
🔹 Выполнение медленного кода из профилей пользователя, который загружается каждый раз при старте консоли
🔹 Большое количество установленных модулей, которые загружаются автоматически
🔹Проверка внешних списков отозванных сертификатов (CRL) установленных модулей (проблема встречается на изолированных от интернета компьютерах)
✅ Долго запускается консоль PowerShell или PS1 скрипты
⏳ На разных компьютерах периодически встречаю проблему очень долгого запуска консоли PowerShell, вплоть до нескольких минут. Это влияет как на запуск самой командной оболочки powershell.exe/pwsh.exe, так и на время выполнения PowerShell скриптов (бывает критично для логон скриптов).
⚙️ Измерить время чистого запуска оболочки powershell.exe в текущем профиле:
powershell -noprofile -ExecutionPolicy Bypass ( Measure-Command { powershell "Write-Host 1" } ).TotalSeconds
Основные причины долгого запуска оболочки PowerShell:
🔹 Выполнение медленного кода из профилей пользователя, который загружается каждый раз при старте консоли
🔹 Большое количество установленных модулей, которые загружаются автоматически
🔹Проверка внешних списков отозванных сертификатов (CRL) установленных модулей (проблема встречается на изолированных от интернета компьютерах)
✅ Долго запускается консоль PowerShell или PS1 скрипты
🔑 Пользователь Active Directory (AD) при стандартной политике паролей не должен иметь пустой пароль, так такая политика задает обязательное требования на минимальный размер пароля и требования к сложности. Однако, если у учетной записи установлен флаг PASSWD_NOTREQD (пароль не требуется), то на такую учетную запись политика паролей не распространяется, и теоретически можно задать такому аккаунту пустой пароль.
⚠️ Включить флаг PASSWD_NOTREQD вручную может администратор или пользователь, которому делегированы права на управление аккаунтами. Поэтому необходимо контролировать наличие флага у учетных записей, и не допускать его наличие у привилегированных акантов.
✅ Вывести всех пользователей AD с включенным флагом PasswordNotRequired:
Active Directory: поиск пользователей без пароля (PasswordNotRequired)
⚠️ Включить флаг PASSWD_NOTREQD вручную может администратор или пользователь, которому делегированы права на управление аккаунтами. Поэтому необходимо контролировать наличие флага у учетных записей, и не допускать его наличие у привилегированных акантов.
✅ Вывести всех пользователей AD с включенным флагом PasswordNotRequired:
Get-ADUser -Filter {PasswordNotRequired -eq $true} -properties PasswordNotRequired | ft SamAccountName,enabled, PasswordNotRequired
Active Directory: поиск пользователей без пароля (PasswordNotRequired)
📚 Командлет Invoke-Command позволяет выполнять команды и запускать скрипты на одном или нескольких удалённых компьютерах одновременно (posh аналог psexec 💪). Он используется в рамках PowerShell Remoting, который базируется на службе Windows Remote Management (WinRM) и протоколе WS-Management, обеспечивая защищённое удалённое управление Windows-системами.
Возможности:
🔹 Позволяет выполнить команды на множестве компьютерах параллельно
🔹 Поддержка запуска нагрузки в фоновом режиме (
🔹 Поддерживает постоянные сессий PowerShell
🔹 В PowerShell Core (6+) может использовать SSH для подключения
Например, проверить состояние службы Windows Update на двух удалённых серверах
✅ Командлет Invoke-Command удобно использовать для выполнения массовых действий на множестве компьютеров: выполнение обновлений, проверок состояния служб, сбора логов, и других задач администрирования и мониторинга рабочих станций и серверов.
Запуск команд и скриптов на удаленных компьютерах через Invoke-Command
Возможности:
🔹 Позволяет выполнить команды на множестве компьютерах параллельно
🔹 Поддержка запуска нагрузки в фоновом режиме (
-AsJob
), не блокируя консоль🔹 Поддерживает постоянные сессий PowerShell
🔹 В PowerShell Core (6+) может использовать SSH для подключения
Например, проверить состояние службы Windows Update на двух удалённых серверах
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock { Get-Service wuauserv }
✅ Командлет Invoke-Command удобно использовать для выполнения массовых действий на множестве компьютеров: выполнение обновлений, проверок состояния служб, сбора логов, и других задач администрирования и мониторинга рабочих станций и серверов.
Запуск команд и скриптов на удаленных компьютерах через Invoke-Command
⚙️ На серверах с установленной Windows Server (разных версий) в доменной сети после перезагрузки можно встретить, что тип сети сам меняется с доменной (domain) на частную (private). Это может вызывать проблемы с доступностью сервера/служб, если к нему применяются кастомные доменные правила файервола.
⚠️ Проблема возникает, если при загрузке хост вовремя не получил ответа от DNS сервера, указанного в настройках сетевого адаптера. Поэтому такая проблема особо характерна для контроллеров домена, где в предпочтительных DNS прописан он сам. Поэтому в настройках DC нужно в качестве preferred DNS указывать другой DC, а в качестве альтернативного – себя. И не перезагружать все DC одновременно 😊
Либо подпирать такой случай костылем:
🔹 В версиях Windows Server 2016/2019 проблема решалось отложенным запуском службы
🔹 В Windows Server 2025 служба NlaSvc по умолчанию отключена, поэтому в качестве костыля можно добавить в автозагрузку PowerShell скрипт, который ждет запуска службы DNS и перезапускает сетевой адаптер:
📚 Слетает доменный тип сети при перезагрузке Windows Server
⚠️ Проблема возникает, если при загрузке хост вовремя не получил ответа от DNS сервера, указанного в настройках сетевого адаптера. Поэтому такая проблема особо характерна для контроллеров домена, где в предпочтительных DNS прописан он сам. Поэтому в настройках DC нужно в качестве preferred DNS указывать другой DC, а в качестве альтернативного – себя. И не перезагружать все DC одновременно 😊
Либо подпирать такой случай костылем:
🔹 В версиях Windows Server 2016/2019 проблема решалось отложенным запуском службы
NlaSvc
(Network Location Awareness Service), так чтобы она запускалась после DNS.🔹 В Windows Server 2025 служба NlaSvc по умолчанию отключена, поэтому в качестве костыля можно добавить в автозагрузку PowerShell скрипт, который ждет запуска службы DNS и перезапускает сетевой адаптер:
do {$status = (Get-Service dns)} until ($status.Status -eq 'Running'); Get-NetAdapter -Physical | Restart-NetAdapter
📚 Слетает доменный тип сети при перезагрузке Windows Server
💡 Основные утилиты и команды для проверки состояния ваших контроллеров домена Active Directory и репликации
📚 В статье подробно рассмотрены ключевые методы и инструменты для комплексной диагностики состояния контроллеров домена Active Directory и процессов репликации. Описаны стандартные утилиты Windows Server, dcdiag, repadmin, replmon, а также возможности PowerShell для мониторинга и выявления ошибок в инфраструктуре AD.
✅ Проверка здоровья контроллеров домена Active Directory и репликации
📚 В статье подробно рассмотрены ключевые методы и инструменты для комплексной диагностики состояния контроллеров домена Active Directory и процессов репликации. Описаны стандартные утилиты Windows Server, dcdiag, repadmin, replmon, а также возможности PowerShell для мониторинга и выявления ошибок в инфраструктуре AD.
✅ Проверка здоровья контроллеров домена Active Directory и репликации
📈 Некоторый запущенные процессы могут сильно нагружать диск в Windows операциями ввода/вывода (до 100%), парализуя нормальную работу других приложений. В этой статье мы рассмотрим базовые инструменты Windows, которые можно использовать, чтобы найти процессы, который сильно нагружает дисковую подсистему.
🔸Task Manager и Process Explorer – могут вывести информацию об I/O процессов
🔸Resource Monitor – позволяет найти в какой именно файл идет активная запись/чтение
🔸 Счетчики производительности (Performance Counters) – можно получить информацию в реальном времени с помощью Performance Monitor (perfmon) или извлечь информацию счетчиков с помощью PowerShell. Например, вывести топ 10 процессов по дисковой активности:
✅ Ищем процессы, который сильно грузят диск в Windows
🔸Task Manager и Process Explorer – могут вывести информацию об I/O процессов
🔸Resource Monitor – позволяет найти в какой именно файл идет активная запись/чтение
🔸 Счетчики производительности (Performance Counters) – можно получить информацию в реальном времени с помощью Performance Monitor (perfmon) или извлечь информацию счетчиков с помощью PowerShell. Например, вывести топ 10 процессов по дисковой активности:
Get-Counter '\Process(*)\IO Data Bytes/sec' | Select-Object -ExpandProperty CounterSamples | Sort-Object -Property CookedValue -Descending | Select-Object InstanceName, CookedValue -First 10
✅ Ищем процессы, который сильно грузят диск в Windows
🏖 Отпуск не повод останавливать развитие
Пока кто-то загорает, вы можете прокачать навыки и поднять себе грейд — отдыхая и учась в удобном ритме.
Видеокурсы Слёрма со скидкой -50% по промокоду LETO2025
🧠 Самообучение, практика, проверка заданий и сертификат после каждого курса.
Акция до 31 июля.
➡️ Забирайте курсы и возвращайтесь из отпуска не только с загаром, но и с обновлённым стеком: забрать курсы по ссылке.
Пока кто-то загорает, вы можете прокачать навыки и поднять себе грейд — отдыхая и учась в удобном ритме.
Видеокурсы Слёрма со скидкой -50% по промокоду LETO2025
🧠 Самообучение, практика, проверка заданий и сертификат после каждого курса.
Акция до 31 июля.
➡️ Забирайте курсы и возвращайтесь из отпуска не только с загаром, но и с обновлённым стеком: забрать курсы по ссылке.