I have created the following class that when imported connects to a vCenter server and you can run PowerCLI commands against vSphere:
class vCenterServer { [string] $vcenter_server [string] $vcenter_user vCenterServer([String] $NewvCenter, [String] $NewUser) { $this.vcenter_server = $NewvCenter; $this.vcenter_user = $NewUser; } [void] connect() { try { $pwdSec = Get-Content C:\vmware_password.txt | ConvertTo-SecureString $bPswd = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pwdSec) $pswd = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bPswd) connect-viserver $this.vcenter_server -protocol https -user $this.vcenter_user -password $pswd } catch { Write-Warning -Message "Could not connect to vc" } } [void] disconnect() { disconnect-viserver $this.vcenter_server -confirm:$false } }
Saved as a .psm1 module I can call this class with the “using” command from the command line and use is just fine - for example:
using module vi-connect $vcenter = [vCenterServer]::new('192.168.0.1', 'administrator@vsphere.local'); $vcenter.connect()
…however putting these same commands in to a script does not seem to work:
C:\Users\me\Desktop> .\class_test.ps1
WARNING: Could not connect to vc
Any ideas why this is not working in a script but does from the commandline?