GPO ile Windows 10 Pro Lock Screen Ayarları

Selamlar Arkadaşlar, Bu makalemde sizlere GPO üzerinden dağıtmış olduğumuz Policy ile Windows 10 Pro cihazlarınızda Lock Screen değiştirmeyi anlatacağım. Bunu yaparken ise PowerShell Scripti kullanacağım ve GPO üzerindeki bir çok özellikten yararlanarak bunu yapacağım. Sizden ricam LockScreen olarak belirmek istediğiniz Ekran Görüntüsünü hazır etmeniz. 🙂

Bu alıştırmayı yapmak için ise ortamım şu şekilde olacak;

1 – Windows Server 2019 (DC olarak kuracağım)
2 – Windows 10 Pro

Bu cihazları bir domain ortamına almam kaçınılmaz zaten. Bunu yapmazsak ve hazır hale getirmezsek bu labımızı uygulayamayız.

– İlk Bölüm Belirlediğimiz Ekran Görüntüsünü Domaindeki Cihazlarımıza Dağıtmak :

Lock Screende gösterilecek olan dosyamızı Client cihazlarımıza dağıtma işlemini yapacağız.

C:\Windows\SYSVOL\sysvol\%domainAdınız% yolunu izleyerek bir Klasör açıyoruz.

Daha sonra Computer Management ekranını açıyoruz ve System Tools > Shared Folders > Shares yolunu izliyoruz. New Share… diyerek oluşturmuş olduğumuz Klasörümüzü seçiyoruz ve Share Permission alanında Everyone’a Read hakkı veriyoruz ve kayıt ediyoruz.

Açtığımız GP Management Editor ekranında Computer Configuration > Preferences > Windows Settings > Files yolunu izliyoruz. Ardından Files alanında Sağ tıklayarak New > File diyoruz.

Açılan pencerede Source Files(s): alanına paylaşımda olan klasör altındaki belirlediğimiz görseli yazıyoruz.
Destination File: alanına ise Client cihazımızda dosyayı nerede konumlandırmak istediğimizi belirliyoruz ve ardından OK tuşu ile kayıt ediyoruz.

Bu dosyayı cihazımıza User Conf. Altında bulunan Files ile de yapabilirdik.

Bu şekilde dosyamızı cihazınızdaki gerekli alana kopyalamış olduk.

– Clientlarda PowerShell Çalışması İçin Yapılan GPO Ayarı :

Bu ayarları yapmadan önce Group Policy Management konsol üzerinden bu ayara özel bir Policy oluşturun ve aşağıdaki adımları buranın içerisinde yapın.

Computer Configuration > Policies > Administrative Templates > System > Group Policy yolunu izleyerek Configure Logon Script Delay kısmını Enable etmeniz ve Dakika cinsinden 1 yazmanız yeterli olacaktır. Bu sayede bilgisayar açıldıktan 1 dk. Sonra Script dosyası çalışmaya başlasın komutunu GPO ile dağıtmış olacağız.

Computer Configuration > Policies > Administrative Templates > Windows Components > Windows PowerShell yolunu izleyerek Turn on Script Execution kısmını Enable ediyoruz. Execution Policy kısmını Allow all scripts yaparak ise cihazımızda tüm PS komutlarını çalıştırabilir hale geliyoruz.

– PowerShell Dosyamızı Oluşturalım :

PS dosyamızın içerisine yazmış olduğum kodlar.

# Change this to the path where you keep the desired background image
$imagePath = ‘C:\Windows\Web\Wallpaper\Screen-lock.jpg’ #Bu alana dosyanızı attığınız yerin Path’ini yazıyorsunuz
$newImagePath = [System.IO.Path]::GetDirectoryName($imagePath) + ‘\’ + (New-Guid).Guid + [System.IO.Path]::GetExtension($imagePath)
Copy-Item $imagePath $newImagePath
[Windows.System.UserProfile.LockScreen,Windows.System.UserProfile,ContentType=WindowsRuntime] | Out-Null
Add-Type -AssemblyName System.Runtime.WindowsRuntime
$asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq ‘AsTask’ -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq ‘IAsyncOperation`1’ })[0]
Function Await($WinRtTask, $ResultType) {
    $asTask = $asTaskGeneric.MakeGenericMethod($ResultType)
    $netTask = $asTask.Invoke($null, @($WinRtTask))
    $netTask.Wait(-1) | Out-Null
    $netTask.Result
}
Function AwaitAction($WinRtAction) {
    $asTask = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq ‘AsTask’ -and $_.GetParameters().Count -eq 1 -and !$_.IsGenericMethod })[0]
    $netTask = $asTask.Invoke($null, @($WinRtAction))
    $netTask.Wait(-1) | Out-Null
}
[Windows.Storage.StorageFile,Windows.Storage,ContentType=WindowsRuntime] | Out-Null
$image = Await ([Windows.Storage.StorageFile]::GetFileFromPathAsync($newImagePath)) ([Windows.Storage.StorageFile])
AwaitAction ([Windows.System.UserProfile.LockScreen]::SetImageFileAsync($image))
Remove-Item $newImagePath

Daha sonra dosyamızı .PS1 olarak kayıt ediyoruz ve PowerShell dosyamız oluşturulmuş oldu.

– PowerShell Dosyamızı GPO üzerinden Dağıtmaya Sıra Geldi :

Bunun için Computer Conf. > Policies > Windows Settings > Scripts (Startup/Shutdown) alanına geliyoruz ve Startup seçeneğine tıklıyoruz. Açılan Startup Properties penceresinde Add Tuşuna basarak aşağıdaki kodlarıda ekliyoruz.

Script Name : %windir%\System32\WindowsPowerShell\v1.0\powershell.exe

Script Parameters : -Noninteractive -ExecutionPolicy Bypass –Noprofile -file %~dp0MyPSScript.ps1

NOT : Normal şartlarda bu kodlarımızı buraya yazmadan sadece powershell dosyamızı atmamızda çalışmasını sağlayacaktır ancak ben ne olur ne olmaz diyerek bu kodlarla çalıştırmayı denedim bilgilerinize. J

NOT 2 : %~dp parametresi sayesinde SYSVOL yolunu belirtmemize gerek kalmıyor.

Bunları yazdıktan sonra OK tuşu ile Add Scripts penceresini kapatın ve Startup Properties penceresine geri dönün ve Show Files… Butonuna tıklayın.

Bu butona bastığınızda size açacağı pencereye oluşturmuş olduğunuz PS dosyanı atmanız gerekmektedir. Aksi halde Script’inizi çalıştırmayacaktır.

Kopyalama işlemini yaptıktan sonra PS dosyanıza sağ tıklayın ve Properties alanına girin. Security tabında Edit… tuşuna basın ve Add… tuşu ile Domain Users ve Domain Computers gruplarını ekleyerek Read & Execute ve Read haklarında Allow alanına işaretleyin. Bunu yaparak dosyamızı çalıştırma izni vermiş olacağız.

PowerShell Dosyasının Client cihazlarda Tam çalışabilmesi için yapılan diğer GPO ayarlamaları :

Computer Conf. > Policies > Windows Settings > Security Settings > File System yolunu izledim ve Sağ tıklayarak Add File… diyerek C:\Windows\Web\Wallpaper dosyasını seçtim. Daha sonra Domain Users ve Domain Computers gruplarını ekleyerek Full Control verdim. Bu sayede çalıştırılacak olan .PS1 dosyası içerisinde yazan foto kısmında bulunan fotoğrafa tam yetkisi olacak ve üzerinden işlem yapabilecekti.

Şekil 1.11

Daha sonra kullanıcı logon olduğunda .PS1 dosyasını çalıştırmasını istediğim için Computer Conf.  > Policies > Windows Settings > Scripts (Logon/Logoff) yolunu izleyerek Logon kısmına tıkladım. PowerShell Scripts kısmına geçtim ve Add.. tuşuna bastım. Açılan pencereden Browse kısmına tıkladım .PS1 dosyamı seçtim.

NOT : Bu alanda da Show Files… diyerek Policy’nin olduğu yere .PS1 dosyanızı atmanız gerekmektedir.

AÇIKLAMA : Şimdi bana soracağınız şey neden iki yerden de aynı şekilde PowerShell dosyasını eklediğimdir. İlk kısımda bulunan Computer Conf. Alanında eklediğim PS dosyası bu makaleyi yazarken denemelerim sırasında çalışan ve sadece Server Side tarafında işe yarayan alandır. User Conf. Kısmında eklediğim ayarlar ve Dosya izinleri ile Client Side’da da aynı şekilde Lock Screen görüntüsünü değiştirebildim. Biraz uzun bir anlatım oldu ama en azından yapmış olduğum ve keşfetmiş olduğum her adımı buraya yazmış oldum. J

Ayrıca GPO üzerinden PowerShell Executionpolicy ayarlarını değiştirmek istemeziseniz ilk alandaki gibi parametreler ile PS dosyanızı çalıştırabilirsiniz.

Bu şekilde sonucuda göstermek isterim. Ayrıca ekran görüntüsü olan animeyide severek izliyorum Anime Tavsiyesidir.

Umarım işinize yarayacak güzel bilgiler vermişimdir bu makalemde. Herkese kolaylıklar dilerim.

6 yorum

  1. Gökhan Çolak Yanıtla

    Kaç Kere Denedim Ama Olmadı. Lock Resmini Klasorlere Atıyorum Ama Script İŞe Yaramıyor.
    Scriptti Manuel Olarak Run Diyorum Yinede Değiştirmiyor.

    • Semih YazarYanıtla

      Selamlar,
      Bunun için Powershell script modunu kontrol etmen gerekir diye düşünüyorum. Execution Policy olarak geçiyordu diye hatırlıyorum. birde oluşturduğun powershell’i ilk önce çalıştıracağın bilgisayarda kullanıcı yetkileri ile çalıştır bakalım orada ne hata veriyor. Dökümanımdan bakarak yaptığında uyguladığım her adımı ayrıntısına kadar yazmaya çalışıyorum ve bende sorunsuz çalıştıktan sonra yayınlama kararı alıyorum. 🙂 çalıştığından eminim yani. umarım en kısa sürede ortamında sende çalıştırabilirsin.
      Kolaylıklar dilerim.

  2. Remzi Yanıtla

    Merhabalar,

    bende aynı şekilde anlatılan tüm ayarları yaptım fakat scriptte bir sorun var. Scriptti manuel olarak çalıştırdığımda da hiçbir şekilde lockscreen değiştirmiyor. Konu ile ilgili yardımcı olma şansınız varmıydı ?

    • Semih Yanıtla

      Selamlar,

      Tavsiyem PS dosyanı bir bat dosyasıyla çalıştırman, Powershell Execution Policy ayarını Client’larında kontrol etmen.

  3. Oğuzhan Ceylan Yanıtla

    Hocam paylaşım için teşekkürler
    Powershell le uğraşmak istemeyenler registy kaydı basabilirler

    komut satırına aşağıdaki komutları girin
    REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP

    REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP /v LockScreenImagePath /t REG_SZ /d “Dosya yolunu buraya yazın” /f

    REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP /v LockScreenImageUrl /t REG_SZ /d “Dosya yolunu buraya yazın” /f

    REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP /v LockScreenImageStatus /t REG_DWORD /d 1 /f

    registy kaydnı alıp gpo ile basabilirsiniz, win 10-11 pro sürümlerinde denendi

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir