none
Stop-computer, время и отмена RRS feed

  • Вопрос

  • Stop-computer -computername test

    Как переделать, чтобы был аналог shutdown /s /t 100 /m \\test?

    Также интересует как сделать shutdown /m \\test -a в Powershell?

    Спасибо :)

    20 ноября 2014 г. 7:49

Ответы

  • help Stop-Computer -full

    Согласно справке такой возможности у этого командлета нет

    Используйте командлет Start-Sleep

    help Start-Sleep -Full

    Если это пушить как джоб то его можно наверное оборвать, справка так же есть в интернете

    Чем вам стандартыный метод не нравится?

    20 ноября 2014 г. 8:05
    Модератор
  • Как вариант использовать WMI: Win32ShutdownTracker method of the Win32_OperatingSystem class

    uint32 Win32ShutdownTracker(
      [in, optional]  uint32 Timeout,
      [in]            string Comment,
      [in]            uint32 ReasonCode,
      [in]            sint32 Flags
    );

    Отмена:

    $signature = @' 
    	[DllImport("advapi32.dll", SetLastError=true)]
    	public static extern bool AbortSystemShutdown(string lpMachineName);
    '@ 
    
    $type = Add-Type -MemberDefinition $signature -Name System -Namespace Win32API -PassThru 
    $type::AbortSystemShutdown("")

    20 ноября 2014 г. 8:07
    Отвечающий

Все ответы

  • help Stop-Computer -full

    Согласно справке такой возможности у этого командлета нет

    Используйте командлет Start-Sleep

    help Start-Sleep -Full

    Если это пушить как джоб то его можно наверное оборвать, справка так же есть в интернете

    Чем вам стандартыный метод не нравится?

    20 ноября 2014 г. 8:05
    Модератор
  • Как вариант использовать WMI: Win32ShutdownTracker method of the Win32_OperatingSystem class

    uint32 Win32ShutdownTracker(
      [in, optional]  uint32 Timeout,
      [in]            string Comment,
      [in]            uint32 ReasonCode,
      [in]            sint32 Flags
    );

    Отмена:

    $signature = @' 
    	[DllImport("advapi32.dll", SetLastError=true)]
    	public static extern bool AbortSystemShutdown(string lpMachineName);
    '@ 
    
    $type = Add-Type -MemberDefinition $signature -Name System -Namespace Win32API -PassThru 
    $type::AbortSystemShutdown("")

    20 ноября 2014 г. 8:07
    Отвечающий
  • Понял, легко не отделаюсь. У меня есть aspx страничка, на которой по кнопке срабатывает выключение заданых компьютеров, хотел для упрощения, положить рядом файлик со скриптом Powershell и обрабатывать с помощью System.Management.Automation, чтобы и остальные из моей команды могли пользоваться без компиляции. Придется видимо имена компьютеров и время хранить в appsettings, а wmi и winapi обрабатывать в CodeBehind. Спасибо.
    20 ноября 2014 г. 8:30