Общий сбой 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 был загружен и подключен к вашему представлению. Соединение разорвано.