我有一个Powershell脚本,它获取远程桌面用户会话的列表,并将它们通过SessionID放入散列。Powershell散列包含键不正确返回错误
# 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的对象。 – bpeikes
这是否意味着'$ userSessionBySessionID.ContainsKey(4 -as [uint32])'有效? – Matt