2

我正在编写一个脚本,该脚本将注销已处于断开状态超过 10 小时的 VDI 会话。除了最后一个障碍-实际上是强制注销之外,我已经设法将所有东西放在一起。

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参数应该允许远程注销,如果我与 VDI 有实时 PCoIP 会话,它确实可以工作,我试图关闭但在断开连接状态时不会。
谁能指出我正确的方向?

4

1 回答 1

0

仍然不完全确定为什么第一个脚本会出错,但我转而使用 VMWare View 的内置 PowerCLI 管理单元来产生相同的结果 - 只是更快更有效。

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

这将向 Horizo​​n 视图服务器查询任何具有“断开连接状态”的会话,然后它将过滤掉所有生命周期少于 10 小时的对象并注销任何剩余的对象。

这需要加载 VMware View PowerCLI PSSnippets 并将其连接到您的视图连接断开。

于 2015-05-26T14:36:31.360 回答