Общий сбой Win32Shutdown

Я собираю сценарий, который будет выходить из сеансов VDI, которые были в отключенном состоянии более 10 часов. Мне удалось собрать все вместе, кроме последнего препятствия - фактически заставить выйти из системы.

ForEach ($Desktop in $VDIlist) 
    {
        $win32OS = Get-wmiobject win32_operatingsystem -ComputerName $desktop.'DNS Name' -EnableAllPrivileges
        write-host "Shutting down host $Desktop."DNS Name""
        $win32OS.Win32Shutdown(4)
    }    

Это приводит к ошибке ниже.

Exception calling "Win32Shutdown" : "Generic failure "
At line:1 char:1
+ $win32OS.win32shutdown(4)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WMIMethodException

Это не происходит, когда не используется аргумент
($win32os.win32shutdown()), но это также не заставляет выходить из системы, как мне требуется.

Насколько я прочитал -EnableAllPrivileges Этот параметр должен разрешать удаленный выход из системы, и он работает, если у меня есть сеанс PCoIP в режиме реального времени с VDI, который я пытаюсь завершить, но не в отключенном состоянии.
Кто-нибудь может указать мне правильное направление?

1 ответ

До сих пор не совсем уверен, почему первый скрипт выдает ошибку, но я вместо этого переключился на использование встроенного в PowerCLI оснастки VMWare View для получения того же результата - просто быстрее и эффективнее.

get-remotesession -state "Disconnected" | Where-Object {($_.duration -match 'Day' -or $_.duration -match '\d\d hours')} | Send-SessionLogoff

Это запросит сервер представлений Horizon о любых сеансах с "отключенным состоянием", затем отфильтрует все объекты, срок службы которых менее 10 часов, и выйдет из системы все, что осталось.

Это требует, чтобы VMware View PowerCLI PSSnippets был загружен и подключен к вашему представлению. Соединение разорвано.

Другие вопросы по тегам