jak regulować jasność ekranu za pomocą powershell?
Regulacja jasności ekranu za pomocą PowerShell jest przydatnym narzędziem, szczególnie w sytuacjach, gdy chcesz zautomatyzować proces dostosowywania jasności lub gdy standardowe metody (np. przyciski sprzętowe) są niedostępne. W systemie Windows można to osiągnąć za pomocą interfejsu WMI (Windows Management Instrumentation) lub nowszych metod dostępnych w Windows 10 i 11.
Aby regulować jasność ekranu za pomocą PowerShell, można skorzystać z poniższych metod:
Pobranie aktualnej jasności:
Get-CimInstance -Namespace root/WMI -ClassName WmiMonitorBrightness | Select-Object -ExpandProperty CurrentBrightness
Ustawienie nowej jasności:
(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 50)
Wartość 50
można zastąpić dowolną liczbą z zakresu od 0 do 100, gdzie 0 oznacza minimalną jasność, a 100 maksymalną.
WMI to interfejs, który umożliwia dostęp do różnych informacji systemowych, w tym do ustawień jasności ekranu. Metoda ta działa na większości laptopów i niektórych monitorach zewnętrznych, które obsługują DDC/CI (Display Data Channel Command Interface).
Pobranie aktualnej jasności:
Get-CimInstance -Namespace root/WMI -ClassName WmiMonitorBrightness | Select-Object -ExpandProperty CurrentBrightness
To polecenie pobiera bieżący poziom jasności ekranu.
Ustawienie nowej jasności:
(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 50)
W tym przypadku 1
oznacza czas realizacji (w sekundach), a 50
to nowa wartość jasności (od 0 do 100).
W nowszych wersjach Windows 10 i 11 można skorzystać z bardziej zaawansowanej metody, która wykorzystuje bibliotekę Windows.Foundation. Jest to bardziej niezawodne rozwiązanie, szczególnie w przypadku nowoczesnych urządzeń.
Przykład skryptu:
Add-Type -AssemblyName System.Runtime.WindowsRuntime
$asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() | Where-Object { $_.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
}
[Windows.System.Power.PowerManager,Windows.System.Power,ContentType=WindowsRuntime] | Out-Null
$Settings = [Windows.System.Power.PowerManager]::BrightnessSettings
$newBrightness = 50 # Przykładowa wartość (0-100)
Await ($Settings.SetBrightnessAsync($newBrightness)) ([System.Threading.Tasks.Task])
Ta metoda wymaga Windows 10 w wersji 1803 lub nowszej i jest bardziej niezawodna na nowoczesnych urządzeniach.
Zgodnie z najnowszymi informacjami, metoda WMI jest nadal szeroko stosowana, ale w nowszych wersjach Windows (10 i 11) coraz częściej preferuje się korzystanie z bibliotek Windows.Foundation, które oferują bardziej stabilne i niezawodne rozwiązania. Warto również zauważyć, że nie wszystkie monitory zewnętrzne obsługują regulację jasności przez PowerShell, co może wymagać użycia dedykowanych narzędzi producenta.
function Set-ScreenBrightness {
param (
[int]$Brightness
)
(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, $Brightness)
}
Następnie możesz używać tej funkcji w prosty sposób:
Set-ScreenBrightness -Brightness 75
Regulacja jasności ekranu za pomocą PowerShell jest możliwa i stosunkowo prosta, szczególnie na laptopach i nowoczesnych urządzeniach. Najbardziej uniwersalną metodą jest wykorzystanie WMI, ale w nowszych wersjach Windows warto rozważyć użycie bibliotek Windows.Foundation. Warto pamiętać o ograniczeniach sprzętowych i konieczności uruchamiania PowerShell z uprawnieniami administratora.