kostenloser Webspace werbefrei: lima-city


IdleTime falsch bei Ausführung im Scheduler

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!