Hallo Zusammen,
Ich bin neu hier. Ich habe versucht, per Powershell-Script den Desktophintergrund - datumsbezogen zu ändern.
Meine Kalenderbilder liegen im Verzeichnis "C:\Daten\Kalender\Monatsbilder\" - im jpg-Format.
Dort soll nach Monat und Jahr gesucht werden. Im Dezember auch nach Tag, damit die Bilder des Adventkranzes der entsprechenden Woche zugeordnet werden.
Das Script funktioniert bis zur Zeile 40. Am Ende des Scripts wird in der richtige Befehl auf dem Bildschirm ausgegeben, aber die Kopie des Bildes nicht in das vorgesehene Verzeichnis kopiert. Wenn ich den Befehl kopiere und manuell ausführe funktioniert das Kopieren. Was mache ich falsch?
Für Hilfe wäre ich dankbar.
Hier das Script
#Hintergrundbild nach Datum tauschen - Powershell 10.12.2024 wegu
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1, True
$a = "Copy-Item"
$b = " C:\Daten\Kalender\Monatsbilder\"
$c = Get-Date -Format "MM_yyyy"
$cm = Get-Date -Format "MM"
$cd = Get-Date -Format "dd"
#Für Advent 4 Bilder vorbereiten
$cmdez = 12
$adv1 = "_1"
$adv2 = "_2"
$adv3 = "_3"
$adv4 = "_4"
$edat1 = "7"
$edat2 = "14"
$edat3 = "21"
$edat4 = "25"
$d = ".jpg"
$e = " -Destination C:\Daten\Kalender\aktuell.jpg"
$f = "C:\Daten\Kalender\aktuell.jpg"
#Remove-item C:\Daten\Kalender\aktuell.jpg
#neues Hintergrungdild erzeugen
If (($cm -ne $cmdez))
{-join($a,$b,$c,$d,$e)}
#Adventbilder 1-4
If (($cm -eq $cmdez) -and ($edat1 -lt $cd))
{-join($a,$b,$c,$adv1,$d,$e)}
If (($cm -eq $cmdez) -and ($cd -gt $edat1) -and ($cd -lt $edat2))
{-join($a,$b,$c,$adv2,$d,$e)}
If (($cm -eq $cmdez) -and ($cd -gt $edat2) -and ($cd -lt $edat3))
{-join($a,$b,$c,$adv3,$d,$e)}
If (($cm -eq $cmdez) -and ($cd -gt $edat3) -and ($cd -lt $edat4))
{-join($a,$b,$c,$adv4,$d,$e)}
#Die Auswahl funktioniert, aber Erstellung der Bildkopie im Ordner C:\Daten\Kalender erfolgt nicht.
#Der String der für die Erstellung notwendig ist, wird korrekt im unteren Fenster angezeigt,
#kann kopiert und ausgeführt werden. Dann wird der Desktophintergrund gewechselt.
#Wechsel des Desktopbilds
$code = @'
using System.Runtime.InteropServices;
namespace Win32{
public class Wallpaper{
[DllImport("user32.dll", CharSet=CharSet.Auto)]
static extern int SystemParametersInfo (int uAction , int uParam , string lpvParam , int fuWinIni) ;
public static void SetWallpaper(string thePath){
SystemParametersInfo(20,0,thePath,3);
}
}
}
'@
add-type $code
#Bildhintergrund neu
[Win32.Wallpaper]::SetWallpaper($f)