Automatyzacja tła Spotlight za pomocą skryptów programu PowerShell

Ostatnia aktualizacja: 07/01/2026
Autor: Isaac
  • PowerShell Umożliwia automatyzację wykorzystania obrazów Spotlight i folderów lokalnych jako tła i ekran blokady za pomocą skryptów, które modyfikują rejestr i wymuszają odświeżenie pulpitu.
  • W środowiskach zarządzanych za pomocą usługi Intune skrypty programu PowerShell są pakowane jako aplikacje, co umożliwia wdrażanie tapet firmowych i jednorodnych konfiguracji przy użyciu plików CSV i folderów zasobów.
  • PowerShell to niezbędne narzędzie do administrowania i wdrażania (IIS, Web Deploy, Bazy danych SQL i MySQL), ale jego możliwości czynią go atrakcyjnym dla atakujących, którzy wykorzystują go w atakach bezplikowych i strukturach powstrzymujących eksploatację.
  • Kluczem do korzystania z programu PowerShell bez zwiększania ryzyka jest połączenie dobrych praktyk tworzenia skryptów, właściwych zasad wykonywania i rozwiązań zabezpieczających opartych na analizie behawioralnej.

Automatyzacja tapet pulpitu za pomocą programu PowerShell

W tym artykule zbierzemy elementy, które zazwyczaj są prezentowane oddzielnie : prawdziwe skrypty do używania obrazów Spotlight jako tła, przykłady automatycznego obracania tapet, jak zastosować to wszystko w środowiskach zarządzanych przez Intune oraz praktyczne wprowadzenie do roli programu PowerShell w administracji i cyberbezpieczeństwie . Celem jest zapewnienie Ci kompleksowego zrozumienia zarówno personalizacji wizualnej, jak i zagrożeń oraz najlepszych praktyk związanych z automatyzacją pulpitu.

Polecana zawartość na pulpicie systemu Windows 11
Podobne artykuły:
Polecana zawartość na pulpicie systemu Windows 11: kompletny przewodnik

Spotlight + PowerShell: Zmień obrazy ekranu blokady w tapetę na co dzień

Zautomatyzuj fundusze Spotlight za pomocą programu PowerShell

Windows Spotlight wyświetla spektakularne obrazy na ekranie blokady każdego dnia , ale nie ma wbudowanej opcji automatycznego używania ich jako tapety pulpitu. Tu właśnie pojawia się PowerShell: za pomocą prostego skryptu możesz ustawić system Windows, aby zawsze używał najnowszego obrazu Spotlight jako tapety bieżącego użytkownika.

Klucz do procedury znajduje się w rejestrze systemu WindowsObrazy Spotlight powiązane z użytkownikiem są dostępne w ścieżce HKEY_LOCAL_MACHINEDokładniej, w gałęzi, która konfiguruje LogonUI i kreatywną zawartość, która zmienia się w zależności od identyfikatora SID (identyfikatora bezpieczeństwa) każdego użytkownika. Sztuką jest wykrycie aktywnego identyfikatora SID, skonstruowanie odpowiedniej ścieżki rejestru, a następnie pobranie najnowszego obrazu.

Typowy skrypt zaczyna się od uzyskania identyfikatora SID bieżącego użytkownika. przez ::GetCurrent()Ten identyfikator SID służy do utworzenia ścieżki rejestru wskazującej ustawienia ekranu blokady. Następnie wyświetlane są podklucze zawierające odniesienia do obrazów Spotlight i wybierany jest najnowszy klucz, ponieważ zazwyczaj są one sortowane według daty utworzenia, co ułatwia znalezienie najnowszego obrazu.

Po znalezieniu prawidłowego klucza rejestracyjnegoSkrypt odczytuje właściwość przechowującą ścieżkę obrazu w formacie pliku (na przykład wartość o nazwie landscapeImagei zapisuje tę ścieżkę w zmiennej. Zmienna ta zostanie później użyta do aktualizacji tła pulpitu użytkownika w gałęzi rejestru. HKCU:\Control Panel\Desktop, w którym system Windows przechowuje ustawienia tapety.

Aby uniknąć niepotrzebnych zmianSkrypt zazwyczaj porównuje ścieżkę bieżącego obrazu Spotlight ze ścieżką ustawioną jako tło w kluczu rejestru użytkownika (WallPaperJeśli są one zgodne, przyjmuje się, że najnowszy obraz Spotlight jest już używany jako tapeta pulpitu i skrypt kończy się pomyślnie bez modyfikowania niczego innego, redukując niepotrzebne migotanie ekranu lub odświeżanie ekranu.

Inną ciekawą cechą tych skryptów jest jakość pliku JPEG.Wielu administratorów korzysta z tego, aby zapewnić wartość JPEGImportQuality en HKCU:\Control Panel\Desktop Jest ustawiony na 100. Jeśli klucz nie istnieje, zostanie utworzony jako DWord z wartością 100; jeśli istnieje, ale ma inną liczbę, jest aktualizowany. Zapobiega to pogorszeniu jakości obrazu przez system Windows podczas konwersji do użycia jako tło.

Ostatnim krokiem jest przypisanie nowej ścieżki do wartości Tapety. z Set-ItemProperty i wymusić odświeżenie tła w systemie Windows. Zwykle robi się to za pomocą... RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters Skrypt działa w pętli przez kilka sekund, ponieważ aktualizacja nie zawsze działa za pierwszym razem. Wykonuje kilka wywołań z jednosekundowymi przerwami, aby upewnić się, że pulpit zostanie odświeżony przy użyciu nowego obrazu.

Jednym z problemów tego podejścia jest to, że dokładna ścieżka rejestru, w której przechowywane są obrazy Spotlight, może się różnić w zależności od komputera lub przyszłych wersji systemu Windows. Zaleca się sprawdzenie ścieżki w środowisku przed wdrożeniem czegokolwiek na dużą skalę i należy pamiętać, że konieczne mogą być zmiany, jeśli Microsoft zmieni sposób przechowywania tych informacji.

Automatyczne obracanie tła z folderu: prosty przypadek

Obróć tapety za pomocą programu PowerShell

Jeśli nie chcesz polegać na Spotlight A jeśli wolisz własny wybór obrazów, program PowerShell ułatwia to również bardzo — na przykład Automatyczna zmiana tapety w zależności od pory dnia w systemie Windows—. Możesz na przykład utworzyć folder C:\Wallpapers, wypełnij ją zdjęciami i pozwól małemu skryptowi okresowo wybierać i stosować obraz (np. raz dziennie) za pomocą Harmonogramu zadań systemu Windows.

  Jak podpisać sterowniki w systemie Windows krok po kroku

Popularnym podejściem jest wyświetlenie plików graficznych za pomocą polecenia Get-ChildItem, ogranicz się do plików korzystając z parametru -File a następnie wybierz jeden losowo, używając Get-RandomZ nieruchomością .FullName Pełna ścieżka jest pobierana z tego pliku, a następnie zapisywana w wartości Wallpaper z rekordu użytkownika, tak jak zrobiono to z obrazami Spotlight.

Po zaktualizowaniu wartości tapetyOdświeżanie tła pulpitu odbywa się za pomocą tej samej techniki: wywołania RUNDLL32.EXE user32.dll,UpdatePerUserSystemParametersChociaż w najprostszym przykładzie polecenie jest wywoływane tylko raz, w rzeczywistych środowiskach wielu administratorów woli powtarzać wywołanie kilka razy lub dodawać krótkie pauzy, aby mieć pewność, że zmiana będzie widoczna na wszystkich pulpitach, szczególnie w systemach z wieloma monitorami.

Ten typ skryptu idealnie nadaje się do małych, osobistych automatyzacji : wystarczy zaplanować jego codzienne uruchamianie w Harmonogramie zadań lub nawet po każdym zalogowaniu. Nie wymaga ingerencji w ścieżki Spotlight ani identyfikator SID użytkownika i działa z dowolną kolekcją obrazów, od zdjęć korporacyjnych po artystyczne tła pobrane z Internetu.

Ponadto skrypty te stanowią dobry punkt wejścia do środowiska PowerShell. Dla początkujących: umożliwiają ćwiczenie z poleceniami cmdlet, takimi jak Get-ChildItem, Get-Random, Set-ItemProperty i podstawowe korzystanie z rejestru systemu Windows bez konieczności pisania skomplikowanego kodu. Stąd łatwo wprowadzić ulepszenia, takie jak filtrowanie według rozszerzeń, dziennik błędów lub integracji z usługami zewnętrznymi.

Tapety i ekrany blokady zarządzane za pomocą usługi Intune

Zarządzanie funduszami w usłudze Intune za pomocą programu PowerShell

W środowiskach biznesowych sytuacja staje się nieco bardziej skomplikowana . Użytkownikowi nie wystarczy po prostu zmienić tapetę; wiele organizacji chce ujednoliconych teł, korporacyjnych ekranów blokady, a czasem pokazów slajdów prezentujących wewnętrzne kampanie, wizerunki marek lub podstawowe informacje o firmie. Gdy zespoły są zarządzane za pośrednictwem usługi Intune i ustawień produktywności systemu Windows 11 , program PowerShell ponownie staje się kluczowym elementem.

Typowy scenariusz to sytuacja, w której administrator otrzymuje zestaw obrazów i żądanie konwersji na pokaz slajdów jako tło pulpitu, a czasem na ekran blokady. Zwykle definiuje się folder lokalny, na przykład C:\temp\slideshowtest Służy to jako poligon doświadczalny, gdzie kopiowane są wszystkie obrazy do wykorzystania. Następnie tworzony jest skrypt, który konfiguruje system Windows do używania tego folderu jako źródła slajdów.

Część Intune obejmuje spakowanie tego skryptu jako aplikacji (na przykład pakiet, który uruchamia .ps1i wdrożyć go na wybranych urządzeniach lub w wybranych grupach użytkowników. Po uruchomieniu w kontekście użytkownika skrypt ma dostęp do kluczy rejestru HKCUgdzie możesz ustawić zarówno tapetę pulpitu, jak i obraz lub tryb ekranu blokady, przestrzegając zasad obowiązujących w danej organizacji.

Bardziej zaawansowanym podejściem jest użycie skryptów zaprojektowanych specjalnie dla IntuneAppRozwiązanie do pakowania i wdrażania. Przykładem jest skrypt o nazwie SetDesktop.ps1, wraz z plikiem CSV (SetDesktop.csvi folder WallpaperPlik CSV działa jako plik konfiguracyjny z kolumnami, takimi jak nazwa pliku obrazu, styl rozmieszczenia (wypełnienie, środek, dopasowanie itp.) i kolor tła w formacie szesnastkowym (na przykład #040E4C (w przypadku ciemnoniebieskiego), co będzie miało zastosowanie wyłącznie, jeśli styl prezentacji tego wymaga.

Typowa struktura tego typu rozwiązania To może być coś takiego \IntuneApp\Wallpaper\wallpaper1.pnggdzie główny obraz jest przechowywany pod standardową nazwą. Na przykład w pliku CSV jest ona zdefiniowana w następujący sposób: WallpaperStyle=Fill tak, aby system Windows wypełniał cały ekran, zachowując jednocześnie proporcje obrazu i przycinając pozostałą część, a także kolor tła w formacie szesnastkowym (na przykład #040E4C (w przypadku ciemnoniebieskiego), co będzie miało zastosowanie wyłącznie, jeśli styl prezentacji tego wymaga.

Aby przetestować zachowanie lokalnieWielu administratorów po prostu uruchamia plik SetDesktop.cmd który wywołuje skrypt w trybie interaktywnym. Po sprawdzeniu, czy tapeta została poprawnie nałożona i czy zachowuje kolor i styl, uruchamiany jest tryb automatyczny. -mode auto w skrypcie programu PowerShell, aby zintegrować go z procesem cichej instalacji, który zostanie wdrożony przy użyciu usługi Intune.

W organizacjach korzystających z systemu IntuneAppMożna nawet dostosować grupę odbiorców publikacji, korzystając z innego pliku CSV (na przykład intune_settings.csv), definiując, które grupy urządzeń lub użytkowników otrzymają nowe tło. Pozwala to na przykład na zastosowanie różnych tapet w zależności od działu, kraju lub poziomu dostępu, a wszystko to scentralizowane i zautomatyzowane.

  Czym jest WPF (Windows Presentation Foundation): kompletny przewodnik po architekturze, XAML, kontrolkach, układzie, danych, grafice i dostosowywaniu

Skonfiguruj tła i ekran blokady za pomocą zewnętrznych obrazów, takich jak Unsplash

Wykorzystanie zewnętrznych obrazów jako tła

Nie wszyscy są zachwyceni obrazami Spotlight . Niektórzy użytkownicy preferują inne repozytoria, takie jak Unsplash, które oferują wysokiej jakości zdjęcia z bardzo elastycznymi zasadami licencjonowania. Powszechnym podejściem jest zaprogramowanie skryptu, który każdego dnia pobiera nowy obraz z adresu URL Unsplash i zapisuje go pod tą samą nazwą na dysku, nadpisując poprzedni plik.

Gdy plik będzie aktualizowany codziennieLogicznym rozwiązaniem jest zautomatyzowanie korzystania z tego elementu przez system Windows zarówno jako tła pulpitu, jak i ekranu blokady. W przypadku tła ponownie wymagane są modyfikacje. HKCU:\Control Panel\Desktop i wymuś aktualizację za pomocą wywołania RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters, w bardzo podobny sposób do poprzednich przykładów.

Ustawienia ekranu blokady są nieco bardziej szczegółowe . System Windows udostępnia interfejs API i ustawienia rejestru do definiowania obrazu ekranu blokady, choć nie jest to tak proste, jak w przypadku klasycznej tapety. Wielu użytkowników rozważa skorzystanie z tego interfejsu API lub skorzystanie z alternatywnych ustawień rejestru, godząc się z koniecznością eksperymentowania, aby sprawdzić, która kombinacja najlepiej sprawdza się w ich wersji systemu Windows 10 lub 11.

W takich scenariuszach skrypt pobierania i skrypt aplikacji często działają oddzielnie : jeden z nich pobiera dzienny obraz z internetu i zapisuje go pod stałą nazwą, podczas gdy drugi, zaplanowany wkrótce potem, po prostu pobiera ten plik i ustawia go jako tapetę pulpitu oraz (w stosownych przypadkach) jako ekran blokady. Ułatwia to rozwiązywanie problemów: jeśli pobieranie się nie powiedzie, skrypt aplikacji będzie kontynuował pracę z ostatnim dostępnym obrazem.

Korzystając z usług zewnętrznych, takich jak Unsplash , należy również wziąć pod uwagę dostępność sieci, zasady dotyczące serwerów proxy oraz potencjalne zmiany w zdalnym interfejsie API. Dobrym pomysłem jest wdrożenie podstawowej obsługi błędów i rejestrowania (na przykład zapisywanie daty, adresu URL i wyniku każdego pobrania w dzienniku lokalnym), aby szybko wykryć, czy coś przestało działać.

PowerShell jako narzędzie automatyzacji i bezpieczeństwa: dobre i złe strony

Administracja i bezpieczeństwo programu PowerShell

Za wszystkimi tymi przykładami tapet kryje się szersza rzeczywistość : PowerShell to niezwykle potężny język skryptowy i powłoka wiersza poleceń do zadań administracyjnych, automatyzacji konfiguracji i operacji bezpieczeństwa. Ta sama moc sprawia, że ​​jest tak atrakcyjnym narzędziem dla atakujących.

Z perspektywy administracyjnejPowerShell umożliwia wyświetlenie listy modułów z Get-Module -ListAvailableOdkryj wszystkie dostępne polecenia za pomocą Get-CommandInterakcja z rejestrem, usługami, IIS, bazami danych i praktycznie każdym komponentem systemu. To czyni go niezbędnym dla administratorów systemu Windows, a także w scenariuszach wieloplatformowych dzięki PowerShell Core, który działa w systemie Windows. Linux i macOS.

Jednakże w kwestiach bezpieczeństwa należy brać pod uwagę pewne zagrożenia.Atakujący mogą nadużywać legalnych poleceń cmdlet, aby wyłączyć program Microsoft Defender za pomocą Set-MpPreference -DisableRealTimeMonitoring $true lub wyklucz całe trasy z analizy za pomocą Add-MpPreference -ExclusionPath "c:". Mogą również używać Get-PSDrive aby wyświetlić jednostki, Get-EventLog aby sprawdzić logi pod kątem poufnych informacji lub przejrzeć historię poleceń programu PowerShell, aby spróbować odzyskać hasła użyte bezpośrednio w wierszu poleceń.

PowerShell umożliwia uruchamianie skryptów z dysku lub tylko z pamięciUłatwia to ataki bezplikowe, które są trudne do wykrycia za pomocą rozwiązań analitycznych opartych na plikach. Za pomocą polecenia cmdlet Invoke-Expression (Alias iexMożliwe jest pobieranie skryptów z Internetu i uruchamianie ich bezpośrednio w pamięci, często wraz z parametrami takimi jak: -ExecutionPolicy Bypass y -nop (bez profilu) w celu ominięcia ograniczeń wykonania.

W ostatnich latach pojawiły się wyspecjalizowane frameworki do eksploitacji, takie jak PowerSploit i PowerShell Empire, oferujące zbiory skryptów do obsługi poeksploatacyjnej, uruchamiania keyloggerów, ekstrakcji danych uwierzytelniających za pomocą Mimikatz i innych zaawansowanych technik. Narzędzia te w pełni wykorzystują elastyczność programu PowerShell i jego głęboką integrację z systemem operacyjnym.

Dla obrońców samo zablokowanie PowerShell.exe nie jest rozwiązaniem.PowerShell jest integralną częścią systemu Windows. Istnieją również narzędzia umożliwiające jego uruchomienie za pośrednictwem biblioteki. System.Management.Automation.dll bez przechodzenia przez standardowy plik wykonywalny. W praktyce każdy proces może uruchomić skrypty programu PowerShell, jeśli ta biblioteka DLL zostanie nadużyta, dlatego nowoczesne rozwiązania bezpieczeństwa koncentrują się na zachowaniu, a nie na konkretnym używanym pliku binarnym.

Rozwiązania takie jak SentinelOne opierają się na analizie behawioralnej : monitorują procesy, argumenty wiersza poleceń, dostęp do rejestru, operacje sieciowe i plikowe oraz wykorzystują ten kontekst do identyfikacji, kiedy użycie programu PowerShell jest uzasadnione (na przykład zmiana tła pulpitu firmowego), a kiedy stanowi element łańcucha ataku. W ten sposób program PowerShell może być nadal używany jako narzędzie administracyjne, nie narażając się na nadużycia.

  Moja kamera internetowa spowalnia aplikacje w systemie Windows: praktyczny przewodnik i rozwiązania

Skrypty programu PowerShell do wdrażania i infrastruktury sieciowej

Oprócz tła i personalizacji wizualnej , PowerShell jest szeroko wykorzystywany do konfigurowania całych infrastruktur, takich jak serwery IIS oraz publiczne i wewnętrzne witryny internetowe. Doskonałym przykładem jest zestaw skryptów instalowanych przez Web Deploy (wersja 2.1), zaprojektowanych w celu ułatwienia wdrażania aplikacji internetowych i zarządzania bazami danych.

Te skrypty zawierają narzędzia takie jak SetupSiteForPublish.ps1, CreateSqlDatabase.ps1, CreateMySqlDatabase.ps1 i AddDelegationRules.ps1 . Zostały one zaprojektowane do automatyzacji wszystkich czynności, od tworzenia witryn w IIS i wdrażania użytkowników, po dostarczanie baz danych SQL lub MySQL i konfigurowanie reguł delegowania niezbędnych użytkownikom do bezpiecznego publikowania treści bez konieczności bycia administratorem serwera.

Aby korzystać z tego typu skryptów, potrzebne jest środowisko z usługą IIS 7 lub nowszą , czyli Windows Server 2008 lub 2008 R2, a użytkownik je uruchamiający musi mieć uprawnienia administratora. Należy również upewnić się, że rola serwera WWW jest włączona, usługa zarządzania usługami IIS jest uruchomiona, program PowerShell 2 jest dostępny, a usługa Web Deploy jest zainstalowana wraz ze składnikiem integracji usługi zarządzania.

Skrypt SetupSiteForPublish.ps1, wykonany bez parametrów, tworzy domyślną witrynę o nazwie WDeploySite z korzeniem fizycznym w %systemdrive%\inetpub\WDeploySite, powiązana grupa aplikacji WDeployAppPool i powiązanie na porcie 8080 (lub kolejnym dostępnym porcie). Dodatkowo utwórz lokalnego użytkownika bez uprawnień administratora (WDeploySiteuser), przyznaje mu pełne uprawnienia do folderu witryny i uprawnienia administratora IIS dla tej konkretnej witryny i zapisuje plik konfiguracyjny (WDeploy.PublishSettings) na pulpicie, z których można korzystać za pomocą narzędzi takich jak WebMatrix czy Visual Studio.

SetupSiteForPublish.ps1 można również używać bardziej elastycznie poprzez parametry takie jak siteName, sitePhysicalPath, siteAppPoolName, sitePort, deploymentUserName, deploymentUserPassword, managedRunTimeVersion, publishSettingSavePath y publishSettingFileNameUmożliwia to na przykład umożliwienie publikowania w istniejącej witrynie dla konkretnego użytkownika lub utworzenie nowej witryny z całkowicie spersonalizowaną nazwą, ścieżką fizyczną, portem i danymi uwierzytelniającymi.

Ze względu na część Baza danych SQLCreateSqlDatabase.ps1 automatyzuje tworzenie z bazy danych, login, użytkownik z uprawnieniami db_owner oraz odpowiadający mu ciąg połączenia, który jest zapisywany w tym samym pliku konfiguracji publikacji. Parametry pozwalają zdefiniować nazwę bazy danych, nazwę użytkownika i hasło, a także określić administratora SQL (na przykład: sa) i instancję (domyślnie) .\SQLExpress), a także ścieżkę i nazwę pliku konfiguracyjnego.

W środowiskach korzystających z MySQLPlik CreateMySqlDatabase.ps1 wykonuje podobną funkcję: generuje bazę danych, tworzy użytkownika z pełnymi uprawnieniami do niej (domyślnie ograniczonymi do localhost) i dodaje ciąg połączenia do pliku konfiguracji publikacji. Parametry takie jak administrator można dostosować (root normalnie), host MySQL (domyślnie localhost) i w razie potrzeby zmodyfikuj wiersz przyznania uprawnień, aby zezwolić na zdalny dostęp za pomocą '%' zamiast 'localhost'.

Aby sfinalizować zabezpieczenia i uprawnienia IISUżywany jest skrypt AddDelegationRules.ps1, który konfiguruje reguły delegowania na serwerze, aby umożliwić niektórym kontom zapisywanie do applicationHost.config i wykonywać czynności takie jak recykling pul aplikacji. Ten skrypt może tworzyć konta z podwyższonymi uprawnieniami specjalnie do tych zadań i obsługuje parametry definiowania nazw użytkowników i haseł, a także modyfikator umożliwiający resetowanie poświadczeń dla istniejących kont.

Wszystkie te przykłady skryptów wdrożeniowych odzwierciedlają tę samą filozofię, którą zaobserwowaliśmy w przypadku automatyzacji funduszy i Spotlight: wykorzystanie programu PowerShell do przekształcania powtarzalnych lub złożonych zadań w powtarzalne, ujednolicone procesy, które można łatwo wdrożyć na wielu serwerach lub maszynach, redukując ryzyko błędu ludzkiego i poprawiając możliwość śledzenia konfiguracji.

Połączenie programu PowerShell z odpowiednimi narzędziami pozwala zarówno dostosować środowisko wizualne użytkownika (czy to za pomocą Spotlight, Unsplash, czy tapet firmowych), jak i zarządzać infrastrukturą internetową i bezpieczeństwem z precyzyjną kontrolą. Zrozumienie interakcji skryptów z rejestrem, usługami systemowymi i zasadami wykonywania stanowi różnicę między dobrze zautomatyzowanym środowiskiem a środowiskiem narażonym na niepotrzebne ryzyko.