Noticed something interesting with this. ISE tabs to not APPEAR to share PSDrives. In tab 1 I can create and access a PSDrive that I cannot (directly) see or access in tab 2. I can also create a PSDrive in tab 2 with the same name as one created in tab 1 with either the same or different mapping. Each tab appears to be completely distinct and separate runspaces for PSDrives - as is consistent with variables, functions, modules, etc.
However, in secondary ISE tabs, when I load the PowerCLI module, I get a small error:
> Import-Module VMware.VimAutomation.Core
The specified mount name 'vmstores' is already in use.
The specified mount name 'vis' is already in use.
>
So I started looking at mount points and PSDrives for the tabs. On tab 1, after importing the VMware module, it lists a few VMware specific PSDrives - Get-PSDrive lists 'vi','vis','vmstore', and 'vmstores'. However, in tab 2, after importing the module (and getting the above referenced errors), looking at Get-PSDrive lists no such PSDrives.
Yet, if I connect to [vCenterServer1] in tab 1 and [vCenterServer2] in tab 2, while the $global:DefaultVIServers in each tab lists only that tab's respective vCenterServer, if I go to tab 1 (where the PSDrives were actually listed) and do a > ls vis: I get BOTH vCenterServers:
> ls vis:
Name Type Id
---- ---- --
[vCenterServer1]@443 VIServer /VIServer=...
[vCenterServer2]@443 VIServer /VIServer=...
So it appears that the VMware module seems to use both a global variable (that is unique per PS tab/runspace) as well as a PSDrive (regardless of PS tab/runspace) that is created via a method that prevents it from being recreated in other runspaces in order to track vCenter Connections.
Could this be using some low-level .Net library to create the mount points and thus is somehow ignoring the PS tab/runspaces?
Let me know if you need more explicit steps/details on this.