PowerShell - zarządzanie kompozycjami

0

Siema witam!
Mam windowsa 10 i niestety tutaj jest utrudniony dostęp do zmiany planów zasilania. Dlatego postanowiłem napsiac skrypcik w PowerShellu zmieniający plan zasilania i Tapete ( lub cały motyw ) przypisany do planu ( żebym wiedział który plan jest aktualnie włączony). Jednak Zmiana tapety nie działa niestety ( nigdy nie pisałem w PowerShellu, a poniżej to zlepek komend które znalazłem). Proszę o pomoc:

    Try {
            $HighPerf = powercfg -l | %{if($_.contains("Wysoka wydajność")) {$_.split()[3]}}
            $LowPerf = powercfg -l | %{if($_.contains("Oszczędzanie energii")) {$_.split()[3]}}
            $CurrPlan = $(powercfg -getactivescheme).split()[3]
            if ($CurrPlan -ne $HighPerf)
            {
                powercfg -setactive $HighPerf
                Set-WallPaper -value "C:\Windows\Web\Wallpaper\Windows\img0"
            }
            else
            {
                powercfg -setactive $LowPerf
                Set-WallPaper -value "C:\Windows\Web\Wallpaper\Theme1\img4"
            }

        } 
    Catch {
            Write-Warning -Message "Coś sie zjebało"
        }

    Function Set-WallPaper($Value)
    {

     Set-ItemProperty -path 'HKCU:\Control Panel\Desktop\' -name wallpaper -value $value

     rundll32.exe user32.dll, UpdatePerUserSystemParameters

    }

PS:
zna ktoś odpowiednik control desktop które pozwoli na zmiane tapety / motywu bezposrednio z powershella tak jak to jest w powercfg w przypadku zarządzania planami zasilania?
PSS: A możecie podać jakiś tutorial do PowerShella lub książke by go ogarnąć?

Pozdrawiam

1

Ad tematu: u mnie działa Twój kod na zmianę tapety. Może dostajesz jakiś wyjątek czy coś? (Nie mam Windowsa 10, żeby się pobawić).

Ad książki http://www.amazon.com/Learn-Wi[...]ll-Month-Lunches/dp/1617291080 ewentualnie: https://www.microsoftvirtualac[...]powershell-3-0-jump-start-8276 i https://www.microsoftvirtualac[...]powershell-3-0-jump-start-8277

0

No u mnie niestety nie działa. Może były jakieś zmiany w win10?

1

Faktycznie, na Windows 10 to nie działa. Nie wiem czemu i nie mam zbytnio czasu na dochodzenie tego, ale znalazłem w Google rozwiązanie:

Function Set-Wallpaper {
  param(
    [Parameter(Mandatory=$True)]
    [String] $Path
  )
    
  Add-Type @"
  using System;
  using System.Runtime.InteropServices;
  using Microsoft.Win32;
  namespace Wallpaper {
    public class Setter {
      [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
      private static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
      public static void SetWallpaper(string path) {
        SystemParametersInfo(0x14, 0x00, path, 0x01 | 0x02);
      }
    }
  }
"@

  [Wallpaper.Setter]::SetWallpaper($Path)
}

Set-Wallpaper -Path "E:\Pictures\hawaii.jpg"

Źródło: http://stackoverflow.com/a/19732915

1 użytkowników online, w tym zalogowanych: 0, gości: 1