Поддержание правильной и корректной работы компьютеров и программного обеспечения для обычных пользователей является рутинной задачей для сотрудников службы технической поддержки и/или администраторов.
Если компания небольшая и все находятся в одной-двух комнатах, обычно нетрудно подняться самому и решить проблему или проверить, что нужно.
А что, если компания большая, а пользователь находится на другом сайте/городе/стране?
Одним из классических инструментов такой работы является удаленное подключение (с помощью RDP, программного обеспечения типа TeamViewer/Skype с общим доступом к рабочему столу и т.п.
).
Однако он не лишен принципиальных недостатков:
- в любом случае конечный пользователь будет отвлекаться от своей работы (в некоторых случаях даже не видя своего рабочего стола)
- эти инструменты не всегда будут работать, если на удаленном компьютере есть ошибки
- установка стороннего программного обеспечения (в том числе проприетарного, в случае TeamViewer) не всегда поощряется политикой компании.
- метод практически не автоматизирован
Вот почему важен механизм управления (мониторинга) удаленных компьютеров.
Одним из возможных решений является использование удаленного доступа к реестру Windows. Он хранит данные в виде иерархической базы данных, что позволяет их быстро извлекать и компактно хранить.
Они используют реестр для хранения собственных настроек и параметров как ОС, так и встроенных сервисов, а также большинства сторонних программ.
Поэтому содержимое реестра сильно влияет на работу системы.
Исходя из этого, реестр вполне можно использовать как «индикатор» для мониторинга (вы можете обнаружить ошибку, если она связана с неверными параметрами в реестре или смоделировать у себя проблемную ситуацию).
Еще одна возможность, которую дает такое решение – это возможность административного контроля пользователей (например, удаленное чтение позволяет видеть факты установки нежелательных программ и внесения изменений в настройки) – не забывайте о влиянии «человеческого фактора».
по работе системы.
На практике это было полезно в рамках проекта SkypeTime , где нужно было отслеживать исправление настроек в Skype для бизнеса.
Но реестр содержит тысячи записей, и контролировать их все крайне сложно.
Поэтому, прежде всего, нам следует ограничить предмет контроля — определить, какие параметры нам интересны, и выяснить, в каких ветках реестра находятся соответствующие значения.
Как правило, последнее нетрудно найти в документации/интернете или определить самостоятельно по названиям клавиш.
Определившись с предметом управления, можно переходить непосредственно к настройке удаленного доступа.
Для этого необходимо активировать службу удаленного вызова процедур на удаленных компьютерах и настроить межсетевой экран нужным образом, что удобно сделать с помощью групповых политик.
Учитывая требования безопасности, для доступа необходимы права администратора домена или локального администратора на каждом устройстве.
Настройка удаленного доступа Чтобы активировать саму службу, в разделе Конфигурация компьютера > Настройки > Настройки панели управления > Службы установите параметры службы RpcSs, как на скриншоте.
Остается только добавить соответствующие исключения брандмауэра.
В той же политике в разделе «Конфигурация компьютера» > «Политики» > «Настройки Windows» > «Параметры безопасности» > «Брандмауэр Windows в режиме повышенной безопасности» > «Правила для входящего трафика» создайте новое правило:
Тип правила – Пользовательский
Укажите путь к программе как %SystemRoot%\system32\svchost.exe.
В дополнительных настройках в разделе «Службы» установите «Применить к сервису со следующим коротким именем — Winmgmt».
На следующих страницах мы устанавливаем TCP без указания конкретных портов и для всех адресов.
и разрешите подключение ( Разрешить соединение ) для профиля домена
Однако следить «вручную» за реестром десятков и сотен компьютеров (даже если это всего лишь несколько записей) – занятие неблагодарное и бессмысленное.
К счастью, этот процесс довольно легко автоматизировать с помощью скриптов.
Например, следующий сценарий PowerShell позволяет узнать, какие пользователи изменили параметры AwayThreshold и IdleThreshold (время перехода в состояния «Отсутствует» и «Неактивно») для Skype для бизнеса.
Код сценария
Для большего удобства скрипт можно запустить со следующими параметрами: -c путь к файлу со списком имен компьютеров для проверки; если не указано, получает компьютеры из AD с активностью в течение 30 дней.Param ( [alias("c")] [string]$FromFileComputers, [alias("r")] [string]$OutputRPCErrorsFile, [alias("u")] [string]$FromFileUsers, [alias("o")] [string]$OutputFile="output.csv", [alias("a")] [int]$MinAway, [alias("i")] [int]$MinIdle ) $RPCErrorsArray = @() $result = @() $HKU = 2147483651 $RegistryForCheckArray = "SOFTWARE\Microsoft\Office\13.0\Lync","SOFTWARE\Microsoft\Office\14.0\Lync","SOFTWARE\Microsoft\Office\15.0\Lync","SOFTWARE\Microsoft\Office\16.0\Lync","SOFTWARE\Microsoft\Communicator" $CurrentComputerNumber = 0; if(![string]::IsNullOrEmpty($FromFileUsers)) { $Users = Get-Content $FromFileUsers; } if(![string]::IsNullOrEmpty($FromFileComputers)) { $Comps = Get-Content $FromFileComputers; } else { $date = (get-date).
AddMonths(-1) $Comps = Get-ADComputer -filter { lastlogontimestamp -ge $date } | select name | ForEach-Object {$_.name} #$Comps = "NB_CY" } $ServersCount = ($Comps).
Count; Foreach ($Comp in $Comps) { $CurrentComputerNumber++ try { Write-Host "Checking: $Comp [$CurrentComputerNumber/$ServersCount]"; $profiles = Get-WmiObject Win32_UserProfile -filter "Loaded=$true and special=$false" -ComputerName $Comp -ErrorAction Stop $reg = [wmiclass]"\\$Comp\root\default:stdregprov" Foreach ($profile in $profiles) { $username = Split-Path $profile.LocalPath -Leaf if(![string]::IsNullOrEmpty($FromFileUsers)) { if(!$Users.Contains($username)) { continue; } } Foreach( $registry in $RegistryForCheckArray) { $hkey = "$($profile.sid)\$registry" #Write-Host "KEY: $hkey" $away = $reg.GetDWORDValue($hku,$hkey,"AwayThreshold").
uValue $idle = $reg.GetDWORDValue($hku,$hkey,"IdleThreshold").
uValue $sip = $reg.GetStringValue($hku,$hkey,"ServerSipUri").
sValue if([string]::IsNullOrEmpty($away) -and [string]::IsNullOrEmpty($idle)) { continue; } if(($MinAway -gt 0 -and $away -lt $MinAway) -or ($MinIdle -gt 0 -and $idle -lt $MinIdle)) { continue; } $result += New-Object PsObject -Property @{ "PC" = $Comp "Username" = $username "SIP" = $sip "SFB_Away" = $away "SFB_Idle" = $idle } } } } catch { if ($_.Exception.GetType().
Name -eq "COMException") { $RPCErrorsArray += $Comp; } Write-Host "Error: ($_.Exception.GetType().
Name)"; $_.Exception } } $result | Export-csv -Path $OutputFile $result | Format-Table -Property PC,Username,SIP,SFB_Away,SFB_Idle -AutoSize Write-Host "Saved to: $OutputFile" if(![string]::IsNullOrEmpty($OutputRPCErrorsFile)) { $RPCErrorsArray | out-file $OutputRPCErrorsFile Write-Host "RPC errors saved to: $OutputRPCErrorsFile" }
-r путь к файлу, в котором будут записаны имена хостов компьютеров, на которых произошла ошибка RPC. -u путь к файлу со списком пользователей (логин), если не указан, проверяет всех.
-o путь к файлу, который будет содержать результат работы скрипта, по умолчанию выходной.
csv. -a — минимальное значение параметра AwayThreshold; записи со значением меньше указанного значения не будут включены в результат выполнения скрипта.
-i — минимальное значение параметра IdleThreshold; записи со значением меньше указанного значения не будут включены в результат выполнения скрипта.
Кроме того, запуск сценария можно автоматизировать, добавив его в планировщик задач Windows или с помощью функции запланированного задания в PowerShell. Теги: #реестр Windows #Системное администрирование #удаленный доступ
-
Блог Pravil О Рекламе, Маркетинге И Pr
19 Oct, 24 -
Как Я Проверял Программу На Вирусы
19 Oct, 24 -
Пол Уэйд Подъемы Ног
19 Oct, 24 -
Две Мои Работы
19 Oct, 24