vmware / PowerCLI-Example-Scripts

http://blogs.vmware.com/powercli
Other
743 stars 601 forks source link

Connect-VIServer fails with "Object reference not set to an instance of an object" #585

Open guyrleech opened 1 year ago

guyrleech commented 1 year ago

Describe the bug

Having connected to a vCenter server via Connect-VIserver, when the connection expires, Connect-VIserver will not work again in the same PowerShell instance connect-viserver error connect-viserver no error

Reproduction steps

1. Run script https://github.com/guyrleech/VMware/blob/master/VMware%20GUI.ps1 with -server <vcenterserver> and leave the launching PowerShell (v5.1 x64) window open
2. Authenticate to a vCenter server (7.0.3 in my case but not sure it is version specific)
3. Leave for 24 hours
4. Click "Refresh" in the script's GUI and observe to data and error in launching PowerShell window
5. Exit script
6. Launch script again from the same PowerShell window and observe reported error
7. Start a new PowerShell instance and verify script runs ok there (until some hours later when connection has timed out)

Expected behavior

Connect to the given Vcenter server

Additional context

Recently moved from a non-domain joined Windows 10 21H2 laptop where this issue never occurred to a domain-joined Windows 10 21H2 laptop (both where I logon as a non-local admin user and PowerShell is run non-elevated) where the issue occurs 100% of the time.

guyrleech commented 1 year ago

I had the same error with a domain joined Server 2019 VM today with version 12.0.0.15939655 and it still does it with a newly launched PowerShell session which it doesn't on my Win10 laptop. Still gives the error after a reboot of the Server 2019 VM so I cannot use PowerCLI on there currently where I could previously.

Output from Trace-Command attached in case it is of use

trace.connect-viserver.log

kamennikolov commented 1 year ago

Turned out there is a limitation of the VAPI endpoint for the length of the session and by default it's set to 24 hours. To change it you have to modify in "/etc/vmware-vapi/endpoint.properties" the values of maxSessionLifespanMilliseconds and minSessionLifespanMilliseconds. By default minSessionLifespanMilliseconds is set to 24 hours and maxSessionLifespanMilliseconds is set to 48. You should change the minSessionLifespanMilliseconds to whatever session length you need and maxSessionLifespanMilliseconds to the same value or higher.

guyrleech commented 1 year ago

But I should be able to then start a new session, authenticating if necessary - it should not give this error requiring the whole PowerShell session to be restarted. No other vendor's API/SDK I use doe this - it's a bug somewhere in PowerCLI

kamennikolov commented 1 year ago

Yes, this part is a bug in PowerCLI. We'll take a look at it.

bhumitra commented 1 year ago

Is there any fix for this yet?

eren-kemer commented 1 year ago

Yes, this part is a bug in PowerCLI. We'll take a look at it.

Hello @kamennikolov Is there any update to this issue? Facing the same problem while directly connecting to a ESXi Host. PowerCLI Version 12.7, vSphere 7.0U3.

Need this functionality to connect, restart vmhost, reconnect. Is there any decent workaround for now? Thanks!

kamennikolov commented 1 year ago

Hi @eren-kemer We have found the issue and a fix will be available in the next PowerCLI version. The workaround for your case currently is to call Disconnect-VIServer right after the restart. Then you'll be able to re-connect normally.