Dukungan untuk pengoperasian komputer dan perangkat lunak yang benar dan benar dari pengguna biasa adalah rutinitas karyawan dan / atau administrator pendukung teknis. Jika perusahaan kecil, dan semua orang berada dalam satu atau dua kamar, biasanya mudah untuk pergi sendiri dan menyelesaikan masalah atau memeriksa apa yang Anda butuhkan.
Tetapi bagaimana jika perusahaan itu besar dan pengguna berada di situs / di kota / negara lain?

Salah satu alat klasik untuk pekerjaan tersebut adalah koneksi jarak jauh (menggunakan RDP, perangkat lunak seperti TeamViewer / Skype dengan demo desktop, dan sebagainya). Namun, ini bukan tanpa kelemahan mendasar:
- dalam hal apa pun, pengguna akhir akan terganggu dari pekerjaannya (dalam beberapa kasus, bahkan tanpa melihat desktopnya)
- alat ini tidak akan selalu berfungsi jika ada kesalahan pada komputer jarak jauh
- instalasi perangkat lunak pihak ketiga (termasuk hak milik, dalam hal TeamViewer) jauh dari selalu disambut oleh kebijakan perusahaan
- metode ini praktis tidak otomatis
Akhirnya - pendekatan ini digunakan ketika insiden telah terjadi (sulit untuk membayangkan bahwa administrator dari waktu ke waktu "secara preventif" terhubung ke setiap pengguna). Itulah sebabnya mekanisme kontrol (pemantauan) komputer jarak jauh penting.
Salah satu solusi yang mungkin adalah dengan menggunakan akses jarak jauh ke registri Windows. Ini menyimpan data dalam bentuk database hirarkis, yang memungkinkan Anda untuk dengan cepat menerima dan menyimpannya dengan kompak. Mereka menggunakan registri untuk menyimpan pengaturan dan parameter mereka sendiri, baik OS dan layanan yang disematkan, serta sebagian besar program pihak ketiga. Oleh karena itu, isi registri sangat mempengaruhi operasi sistem.
Berdasarkan ini, registri dapat digunakan sebagai “indikator” untuk pemantauan (Anda dapat mendeteksi kesalahan jika dikaitkan dengan parameter yang salah dalam registri atau mensimulasikan situasi yang bermasalah).
Kemungkinan lain yang diberikan oleh solusi ini adalah kemungkinan kontrol administratif pengguna (misalnya, pembacaan jarak jauh memungkinkan Anda untuk melihat fakta menginstal program yang tidak diinginkan dan membuat perubahan pada pengaturan) - jangan lupa tentang pengaruh "faktor manusia" pada sistem. Dalam praktiknya, ini berguna dalam kerangka proyek SkypeTime , di mana perlu untuk melacak koreksi pengaturan di Skype for Business.

Tetapi registri berisi ribuan entri, sangat sulit untuk mengontrol semuanya. Oleh karena itu, pertama-tama, perlu untuk membatasi subjek kontrol - untuk menentukan parameter mana yang menarik bagi kami, dan mencari tahu di mana cabang-cabang registri tertentu nilai yang sesuai berada. Sebagai aturan, yang terakhir tidak sulit ditemukan dalam dokumentasi / Internet, atau menentukan secara independen berdasarkan nama kunci.
Setelah menentukan subjek kontrol, Anda dapat melanjutkan ke konfigurasi langsung akses jarak jauh. Untuk melakukan ini, Anda perlu mengaktifkan layanan Panggilan Prosedur Jauh pada komputer jarak jauh dan mengkonfigurasi firewall sebagaimana diperlukan, yang mudah dilakukan menggunakan kebijakan grup. Mempertimbangkan persyaratan keamanan, akses memerlukan hak administrator domain atau administrator lokal di masing-masing perangkat.
Konfigurasikan Akses Jarak JauhUntuk mengaktifkan layanan itu sendiri, di bagian Konfigurasi Komputer> Preferensi> Pengaturan Panel Kontrol> Layanan, atur parameter untuk layanan RpcS, seperti dalam cuplikan layar

Tetap menambahkan pengecualian Firewall yang sesuai. Dalam kebijakan yang sama, di bawah Konfigurasi Komputer> Kebijakan> Pengaturan Windows> Pengaturan Keamanan> Windows Firewall dengan Keamanan Lanjut> Aturan Masuk, buat Aturan Baru:
Jenis Aturan - Kustom

Tentukan jalur program -% SystemRoot% \ system32 \ svchost.exe
Dari pengaturan tambahan di bagian Layanan, atur Terapkan ke layanan dengan nama pendek berikut - Winmgmt

Pada halaman-halaman berikut kami tentukan TCP tanpa menentukan port spesifik dan untuk semua alamat


dan izinkan koneksi ( Izinkan Koneksi ) untuk profil domain


Namun, secara manual mengendalikan registri lusinan dan ratusan komputer "secara manual" (bahkan jika dengan beberapa entri) adalah tugas yang tidak berterima kasih dan tidak masuk akal. Untungnya, proses ini cukup mudah untuk diotomatisasi menggunakan skrip. Misalnya, skrip PowerShell berikut ini memungkinkan Anda untuk mengetahui pengguna mana yang telah mengubah parameter AwayThreshold dan IdleThreshold (waktu untuk beralih ke status "Di Tempat" dan "Tidak Aktif") untuk Skype for Business.
Kode skripParam ( [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" }
Untuk kenyamanan yang lebih besar, skrip dapat dijalankan dengan parameter:
path -c ke file dengan daftar komputer hostname untuk memeriksa, jika tidak ditentukan - dapatkan komputer dari AD dengan aktivitas 30 hari.
-r path ke file di mana nama host komputer yang memiliki kesalahan RPC akan ditulis.
-U path ke file dengan daftar pengguna (login), jika tidak ditentukan, periksa semua.
-o path ke file di mana hasil skrip akan dieksekusi, defaultnya adalah output.csv.
-sebuah nilai minimum untuk parameter AwayThreshold, catatan dengan nilai kurang dari nilai yang ditentukan tidak akan mendapatkan hasil dari eksekusi skrip.
-i nilai minimum untuk parameter IdleThreshold, catatan dengan nilai kurang dari nilai yang ditentukan tidak akan mendapatkan hasil skrip.
Selanjutnya, skrip dapat diotomatisasi dengan menambahkan Penjadwal Tugas Windows (Penjadwal Tugas) atau melalui fungsionalitas Pekerjaan Terjadwal di PowerShell.