【发布时间】:2016-04-21 16:20:41
【问题描述】:
我有一个 Powershell 脚本,它获取远程桌面用户会话的列表并按 SessionID 将它们放入哈希中。
# Create a hashtable which contains all of the remote desktop sessions by SessionId
$userSessionBySessionID = @{}
ForEach($userSession in Get-RDUserSession -CollectionName $collectionName)
{
$userSessionBySessionID.Add($userSession.SessionId, $userSession)
}
然后我可以将 $userSessionByID 转储到 PowerShell ISE 中
Name Value
---- -----
9 Microsoft.RemoteDesktopServices.Management.RDUserSession
8 Microsoft.RemoteDesktopServices.Management.RDUserSession
7 Microsoft.RemoteDesktopServices.Management.RDUserSession
6 Microsoft.RemoteDesktopServices.Management.RDUserSession
5 Microsoft.RemoteDesktopServices.Management.RDUserSession
4 Microsoft.RemoteDesktopServices.Management.RDUserSession
2 Microsoft.RemoteDesktopServices.Management.RDUserSession
1 Microsoft.RemoteDesktopServices.Management.RDUserSession
令人沮丧的部分是 $userSessionBySessionID.ContainsKey(4) 返回 false。我在这里想念什么?我也尝试过 $userSessionBySessionID.ContainsKey("4") ,但这也返回 false。
【问题讨论】:
-
sessionid是什么类型的?
$userSession.SessionId.Gettype()返回什么? -
我认为问题可能是 $userSession.SessionId.GetType() 返回 UInt32,而 Get-Process 返回一个 SessionId 为 Int32 的对象。
-
这是否意味着
$userSessionBySessionID.ContainsKey(4 -as [uint32])有效?
标签: powershell hash