OS: Debian 9 Stretch amd64
PS /root> get-host
Name : ConsoleHost
Version : 6.1.0-preview.2
InstanceId : 87acc50e-d2c7-4bf8-a667-5ddb22848a61
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : de-DE
CurrentUICulture : de-DE
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
Import-Module VMware.VimAutomation.Core
Get-Module VMware* | Select Name,Version
PS /root> Get-Module VMware* | Select Name,Version
Name Version
---- -------
VMware.Vim 6.7.0.8343295
VMware.VimAutomation.Cis.Core 10.1.0.8377811
VMware.VimAutomation.Common 10.1.0.8342134
VMware.VimAutomation.Core 10.1.0.8344055
VMware.VimAutomation.Sdk 10.1.0.8342078
Due to the new possibilites Microsoft offers the Linux community, I installed Microsoft PowerShell and Vmware PowerCLI on Debian.
I want Zabbix Proxy to query VMware vCenter via External check.
I wrote the following script:
The script works very vell, when I start it in my SSH session. But as soon as Zabbix executes the script, the Module fails:
VERBOSE: Import-Module:
Import-Module : The type initializer for 'VMware.VimAutomation.ViCore.Util10.SettingsManager' threw an exception.
At /usr/lib/zabbix/externalscripts/vmware.vm.snapshot.count.ps1:22 char:1
+ Import-Module VMware.VimAutomation.Core
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [Import-Module], TypeInitializationException
+ FullyQualifiedErrorId : System.TypeInitializationException,Microsoft.PowerShell.Commands.ImportModuleCommand
Is this a bug I can report anywhere? Is this egiable for Vmware support? Or can someone help me here?
Hello,
I have tried a similar action and had the same error.
RootCause: The service account does not have a "HOME" environment variable set
Solution: Create an environment variable HOME set to /tmp/ for example and it works.
What led me to investigate environment variable was the error:
Parameter name: path1: ArgumentNullException
at System.IO.Path.Combine(String path1, String path2)
at VMware.VimAutomation.ViCore.Util10.SettingsManager.GetUserSettingsLocation(Nullable`1 targetPlatform)
at VMware.VimAutomation.ViCore.Util10.SettingsManager..cctor()
Regards,
Joseph
There are a couple of things to note (see Release Notes😞
Would you eventually have the option to go back to PowerShell Core 6.0.2?
Since the script seems to work when you run it under your credentials, is Zabbix running under the same account?
Do you have the same Path definitions for both accounts?
On your support question, see PowerCLI Support Breakdown
But since you are using an OS and a PS version that is not officially supported, I'm doubtful that you would be able to open a SR.
But the community (where you asked) might help.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
In the last hour I installed a completely new additional Zabbix Proxy. It's Ubuntu 16.04. I Installed PowerShell Core 6.0.2.
root@zabbix-ubuntu:/usr/lib/zabbix/externalscripts# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
get-host
Name : ConsoleHost
Version : 6.0.2
InstanceId : db63dd07-ea01-4e6e-9a6d-213bfdc66dd5
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : de-DE
CurrentUICulture : de-DE
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
PS /usr/lib/zabbix/externalscripts> Import-Module VMware.VimAutomation.Core
PS /usr/lib/zabbix/externalscripts> Get-Module VMware* | Select Name,Version Name Version
---- -------
VMware.Vim 6.7.0.8343295
VMware.VimAutomation.Cis.Core 10.1.0.8377811
VMware.VimAutomation.Common 10.1.0.8342134
VMware.VimAutomation.Core 10.1.0.8344055
VMware.VimAutomation.Sdk 10.1.0.8342078
Debian is currently not in the list of officially supported OS
> I switched to Ubuntu, the error persists.
> Would you eventually have the option to go back to PowerShell Core 6.0.2?
I switched to PowerShell 6.0.2, the error persists.
> Since the script seems to work when you run it under your credentials, is Zabbix running under the same account?
Yes, I checked running the script as the deamon user. No difference.
> Do you have the same Path definitions for both accounts?
Yes.
How can we furher test? I attach the log:
Value "Script Name
vmware.vm.snapshot.count.ps1
VCSA Host IP
10.23.0.200
Username
monitoring@vsphere.local
Password
xxx
Virtual machine
server-domain.local
VERBOSE: Server:
10.23.0.200
VERBOSE: User:
monitoring@vsphere.local
VERBOSE: Password:
xxx
VERBOSE: VM:
server-domain.local
VERBOSE: Connection string:
Connect-VIServer -Server 10.23.0.200 -User monitoring@vsphere.local -Password xxx -Force
Name : ConsoleHost
Version : 6.0.2
InstanceId : 5d257a8c-98d3-4787-b4a3-a02cd71c7141
UI : System.Management.Automation.Internal.Host.InternalHostUserI
nterface
CurrentCulture : de-DE
CurrentUICulture : de-DE
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
VERBOSE: Import-Module:
Import-Module : The type initializer for 'VMware.VimAutomation.ViCore.Util10.SettingsManager' threw an exception.
At /usr/lib/zabbix/externalscripts/vmware.vm.snapshot.count.ps1:25 char:1
+ Import-Module VMware.VimAutomation.Core
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [Import-Module], TypeInitializationException
+ FullyQualifiedErrorId : System.TypeInitializationException,Microsoft.PowerShell.Commands.ImportModuleCommand
VERBOSE: Get-Module:
Name : VMware.VimAutomation.Sdk
Version : 10.1.0.8342078
Connect-VIServer : The type initializer for 'VMware.VimAutomation.ViCore.Util10.SettingsManager' threw an exception.
At /usr/lib/zabbix/externalscripts/vmware.vm.snapshot.count.ps1:30 char:1
+ Connect-VIServer -Server $Server -User $User -Password $Password -For ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Connect-VIServer], TypeInitializationException
+ FullyQualifiedErrorId : System.TypeInitializationException,VMware.VimAutomation.ViCore.Cmdlets.Commands.Co
Can you find out which netcore version you are running?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
I don't think I have an answer. If I do "apt search netcore" I do find several releases, but none of them are installed.
What I did to install PowerShell is:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl -o /etc/apt/sources.list.d/microsoft.list https://packages.microsoft.com/config/ubuntu/16.04/prod.list
apt update
apt install powershell=6.0.2-1.ubuntu.16.04
pwsh
Install-Module -Name VMware.PowerCLI -Force
Any chance we could continue working on this? Any other playe I could get official support?
If you have installed all the components as listed in the latest VMware PowerCLI 10.2.0 Release Notes, you should be able to open a SR.
When opening a SR the GSS people might try to tell you that there is no support for PowerCLI unless you have a Developer Support Contract.
In that case refer to PowerCLI Support Breakdown
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hello,
I have tried a similar action and had the same error.
RootCause: The service account does not have a "HOME" environment variable set
Solution: Create an environment variable HOME set to /tmp/ for example and it works.
What led me to investigate environment variable was the error:
Parameter name: path1: ArgumentNullException
at System.IO.Path.Combine(String path1, String path2)
at VMware.VimAutomation.ViCore.Util10.SettingsManager.GetUserSettingsLocation(Nullable`1 targetPlatform)
at VMware.VimAutomation.ViCore.Util10.SettingsManager..cctor()
Regards,
Joseph
Thanks, great find!
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
You are my hero! I spent so much time to built this function for Zabbix! I never would have checked Environment Variables!
I simply but "env" at the beginning of all my scripts to check, what is written there, compared to all my manual tests. And tada, instead of ~12 variables it were only ~5. HOME was missing.
Then I removed all debug code and tests etc, and used the original script I wrote, but added "export HOME=/var/lib/zabbix/" in the second line of the script. A few minutes later it started working! This is brilliant!
We now have to ability, to execute PowerShell scripts from our Debian Linux Zabbix Proxy, against Windows or VMware Hosts for example, and the results get reported to the Zabbix Server. This offers so many new possibilities!
Thank you again!