# Automatyzacja wsparcia technicznego za pomocą GUI PowerShell: doświadczenie z wewnętrznej development
W domenie Active Directory z 4–5 tys. stacji roboczych Windows 7–10 zgłoszenia wsparcia przychodziły bez adresów IP lub hostname. Dostęp do informacji o komputerze użytkownika wymagał ręcznego wyszukiwania w ADUC: kopiowanie loginu z ticketu, nawigacja po snap-inie, wyciąganie hostname z pola Description konta użytkownika. To spowalniało obsługę, szczególnie przy potrzebie zebrania konfiguracji sprzętowej lub wykonywania rutynowych zadań bez zdalnego połączenia.
Rozwiązanie — własny skrypt PowerShell z interfejsem GUI. Na podstawie loginu użytkownika narzędzie wyciąga hostname z AD, zbiera dane o koncie i komputerze, oferuje przyciski do akcji. Wyniki wyświetlane są w jednym oknie: górny panel — informacje, środkowy — przyciski funkcyjne, dolny — wyniki.
Skrypt powstał na bazie analizy open-source LazyWinAdmin GUI (2011), ale został przepisany od zera pod środowisko korporacyjne. Zapewniło to bezpieczeństwo, dostosowanie do zadań i pogłębione opanowanie PowerShell na poziomie średniozaawansowanego developera.
Kluczowe funkcje narzędzia
Narzędzie obejmowało codzienne scenariusze wsparcia technicznego. Uruchomienie wymagało praw administratora na wszystkich komputerach domeny oraz dostępu sieciowego (WinRM, SMB, ICMP).
Oto główny zakres funkcji:
- Wyszukiwanie i dane z AD: hostname po loginie, czas ostatniego logowania, wygaśnięcie hasła, ping hostname, imię i nazwisko, telefon, numer służbowy, przynależność do grup.
- Zdalne połączenie: MSRA, Dameware, RDP do wyboru.
- Diagnostyka sprzętowa: konfiguracja komputera (Get-WmiObject Win32_ComputerSystem, Win32_Processor itp.), status S.M.A.R.T. dysku HDD.
- Administracja: uruchomienie mmc „Computer Management” z podwyższonymi prawami, PS Remoting, cmd z prawami admin, restart/wyłączenie.
- Konserwacja: czyszczenie plików temp (bez GPO), obliczanie rozmiaru profilu lokalnego/roamingowego, kopiowanie dystrybucji oprogramowania.
- Oprogramowanie i kwoty: lista zainstalowanego oprogramowania (Get-WmiObject Win32_Product), rozmiar skrzynki Exchange.
- Specyfika: ponowna konfiguracja reguł Windows Firewall, edycja rejestru dla peryferii, wysyłanie wiadomości na komputer, spis rezolucji ticketów.
- Operacje masowe: eksporty z AD (członkowie grupy, pracownicy wg stanowiska), dodawanie do grup.
Realizacja opierała się na modułach ActiveDirectory, WMI/CIM, WinRM. GUI zbudowane na Windows Forms (Add-Type -AssemblyName System.Windows.Forms), z TextBox do wprowadzania loginu, DataGridView do wyników, Buttonami do akcji.
Rozwój i ulepszenia
Początkowo skrypt służył do wyszukiwania hostname. Stopniowo dodawano funkcje w miarę odkrywania rutyny: od diagnostyki po automatyzację instalacji oprogramowania. Ogólna zasada — operacje one-click z logowaniem w GUI.
Przykład logiki dla hostname:
$username = $textboxLogin.Text
$user = Get-ADUser -Identity $username -Properties Description
$hostname = $user.Description
Dla inwentaryzacji sprzętowej:
Invoke-Command -ComputerName $hostname -ScriptBlock { Get-WmiObject Win32_Processor | Select Name, NumberOfCores }
Narzędzie używane przez grupę 15 specjalistów przez 3 lata, przyspieszając obsługę zgłoszeń. Ograniczenia: zależność od praw admin, brak substytutów importowych w momencie wdrożenia.
Co najważniejsze
- Skrypt skracał czas wyszukiwania danych z minut do sekund, minimalizując ręczne użycie ADUC.
- Obejmuje 80% rutynowych zadań drugiej linii bez połączenia z komputerem.
- Wymaga pełnych praw domenowych; w środowiskach ograniczonych funkcjonalność jest okrojona.
- Baza — PowerShell 5.1+ z modułami AD, WinRM włączony.
- Skalowanie możliwe przez profile (różne zestawy przycisków dla ról).
— Editorial Team
Brak komentarzy.