IdleTime falsch bei Ausführung im Scheduler
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
-
Hallo,
ich möchte per Script unsere VM´s nach einem gewissen Stillstand abschalten.
Dazu habe ich dieses Snippet gefunden was auch macht was es soll.
Add-Type @' using System; using System.Diagnostics; using System.Runtime.InteropServices; namespace PInvoke.Win32 { public static class UserInput { [DllImport("user32.dll", SetLastError=false)] private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); [StructLayout(LayoutKind.Sequential)] private struct LASTINPUTINFO { public uint cbSize; public int dwTime; } public static DateTime LastInput { get { DateTime bootTime = DateTime.UtcNow.AddMilliseconds(-Environment.TickCount); DateTime lastInput = bootTime.AddMilliseconds(LastInputTicks); return lastInput; } } public static TimeSpan IdleTime { get { return DateTime.UtcNow.Subtract(LastInput); } } public static int LastInputTicks { get { LASTINPUTINFO lii = new LASTINPUTINFO(); lii.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO)); GetLastInputInfo(ref lii); return lii.dwTime; } } } } '@
Anschließend ermittel ich dann mit Powershell die IdleTime.
$Last = [PInvoke.Win32.UserInput]::LastInput $Idle = [PInvoke.Win32.UserInput]::IdleTime
Wenn ich das Script nun manuell auf einer VM ausführe, wird die richtige Zeit ermittelt. Lasse ich das Script vom Scheduler ausführen, wird als IdleTime immer der letzte Neustart der VM genommen.
Der erste Log wurde durch den Scheduler erstellt, der zweite zeitgleich durch nauelle Ausführung.
20180816 17:45 : VMNAME\ts Idle for 0 days, 16 hours, 15 minutes, 0 seconds. | action: no 20180817 10:06 : VMNAME\ts Idle for 0 days, 0 hours, 0 minutes, 6 seconds. | action: shutdown
Vielleicht kann mir hier ja jemand auf die Sprünge helfen, ich finde leider keine Lösung dazu.
Gruß Marco -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage