Public/Set-LockScreenWallpaper.ps1
function Set-LockScreenWallpaper { <# .SYNOPSIS Устанавливает кратинку для экрана блокировки. .DESCRIPTION Устанавливает кратинку для экрана блокировки (пользователь не может сменить её после этого). .PARAMETER Path Путь к изображению. .EXAMPLE PS C:\> Set-LockScreenWallpaper -Path C:\Tools\_aux\pic\Wallpaper.jpg .NOTES На данный момент не проверялись допустимые форматы изображения. Работает с JPEG. #> [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 0)] [System.String] $Path ) begin { $RegKeyPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP' $LockScreenPathParamName = "LockScreenImagePath" $LockScreenStatusParamName = "LockScreenImageStatus" $LockScreenUrlParamName = "LockScreenImageUrl" $StatusValue = 1 } process { try { if ($IsLinux) { throw [System.Configuration.ConfigurationException]::New('This operation system does not supported.') } if (-not(Test-Path -Path $RegKeyPath)) { Write-Verbose -Message "Создаем раздел реестра $($RegKeyPath)." New-Item -Path $RegKeyPath -Force | Out-Null } $SourceFile = Get-Item -Path $Path $LockScreenImageFileName = 'LockScreen' + $SourceFile.Extension $LockScreenImageFilePath = Join-Path -Path $Env:SystemRoot -ChildPath $LockScreenImageFileName Write-Verbose -Message "Копируем файл изображения из $($Path) в $($LockScreenImageFilePath)." Copy-Item -Path $Path -Destination $LockScreenImageFilePath -Force Write-Verbose -Message 'Создаем параметры в реесте.' New-ItemProperty -Path $RegKeyPath -Name $LockScreenStatusParamName -Value $StatusValue -PropertyType DWORD -Force | Out-Null New-ItemProperty -Path $RegKeyPath -Name $LockScreenPathParamName -Value $LockScreenImageFilePath -PropertyType STRING -Force | Out-Null New-ItemProperty -Path $RegKeyPath -Name $LockScreenUrlParamName -Value $LockScreenImageFilePath -PropertyType STRING -Force | Out-Null } catch { Write-Error -Exception $PSItem.Exception } } end { } } |