Geplante Aufgabe funktioniert nicht mit Windows 8


0

Ich habe diesen Stapel, der eine geplante Aufgabe macht, die zu einem Powershell-Skript aufruft, und ich kann es nicht veranlassen, in Windows 8 zu laufen. Es funktioniert tadellos auf Windows 7, aber wenn ich es in Windows 8 verwende, bleibt es stecken. Mein Problem ist, dass die Aufgabe nicht startet, sondern erstellt und geplant wird. Wenn ich das Powershell-Skript starte, ohne es zu planen, funktioniert es perfekt.

Stapel:

@copy / y wall.jpg% APPDATA%
@copy / y cuenta.ps1% APPDATA%
schtasks / create / sc minute / mo 1 / tn wallpaper / tr "Powershell -ExecutionPolicy ByPass -Datei% appdata% \ cuenta.ps1"

Power Shell :

Add-Type @"
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace Wallpaper
{
   public enum Style : int
   {
       Tile, Center, Stretch, NoChange
   }
   public class Setter {
      public const int SetDesktopWallpaper = 20;
      public const int UpdateIniFile = 0x01;
      public const int SendWinIniChange = 0x02;
      [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, Wallpaper.Style style ) {
         SystemParametersInfo( SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange );
         RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
         switch( style )
         {
            case Style.Stretch :
               key.SetValue(@"WallpaperStyle", "2") ; 
               key.SetValue(@"TileWallpaper", "0") ;
               break;
            case Style.Center :
               key.SetValue(@"WallpaperStyle", "1") ; 
               key.SetValue(@"TileWallpaper", "0") ; 
               break;
            case Style.Tile :
               key.SetValue(@"WallpaperStyle", "1") ; 
               key.SetValue(@"TileWallpaper", "1") ;
               break;
            case Style.NoChange :
               break;
         }
         key.Close();
      }
   }
}
"@

[Wallpaper.Setter]::SetWallpaper( '%appdata%\wall.jpg', 0 )

Grundsätzlich rufe ich ein ps1 an, das das Hintergrundbild alle x Minuten wechselt. Hat jemand ein Problem wie dieses gelöst?


Zeigt die Ereignisanzeige oder der Aufgabenplanungsbildschirm irgendetwas an, warum sie nicht gestartet wurden? Ich bin mir bei Powershell nicht sicher, aber da es auf .NET basiert, was passiert, wenn Sie es in einen Try-Catch-Block einbinden, damit Sie die Ausnahme veröffentlichen können (falls es eine gibt)?
Dave

Ok, ich bin ein guter Versuch
Pablo Nodar Campos

Sie müssen etwas im catch tun, um es auf irgendeine Weise zu protokollieren.
Dave

@ Dave Nun, ich weiß nicht, ob ich den Versuch gut mache, aber es gibt nichts an, es funktioniert perfekt, wenn ich es direkt ohne Zeitplanung mache. Ich mache das so: versuche {[Wallpaper.Setter] :: SetWallpaper ('% appdata% \ wall.jpg', 0)} fange [System.Net.WebException], [System.IO.IOException] {} ich weiß nicht wie man es richtig macht
Pablo Nodar Campos

Natürlich wird dies in win8 nicht wirklich benötigt, es gibt eine Eigenschaft, mit der das Hintergrundbild alle X Minuten in win8 geändert werden kann.
Tyson
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.