Hi guys,
I have what I would have thought to be a simple issue but is turning into a bit of a headache to say the least.
Basically I am attempting to run a function which uses POSH-SSH to run a series of commands against an ESXi host.
The code seems to fail when I attempt to add the results from the function into a variable, please see below:
[pre]
if ((Get-Module -Name Posh-SSH -ErrorAction SilentlyContinue) -eq $null ) { Import-Module “Posh-SSH” -Force:$true -WarningAction SilentlyContinue}
$Hosts = Get-Content Hosts.txt
$GetQLogic = “cd /proc/scsi/qla2*;head -2 1;head -2 2”
$GetEmulex = “cd /proc/scsi/lpfc*;head -5 1;head -5 2”
$FullListQLogic = @()
$FullListEmulex = @()
$Cred = get-credential
foreach ($Node in $Hosts)
{
$FullListQLogic += Get-SSHResult($Cred,$Node,$GetQLogic)
$FullListEmulex += Get-SSHResult($Cred,$Node,$GetEmulex)
exit
}
exit
Function Get-SSHResult() {
Param (
[PSCredential]$connectionCredentials,
[string]$ESXiHost,
[string]$sshCommand
)
#Start SSH Services
start-VMHostService -HostService (Get-VMHost “$ESXihost”| Get-VMHostService | Where { $_.Key -eq “TSM-SSH”} ) -Confirm:$false
$Session = New-SSHSession -ComputerName “$($ESXiHost)” -Credential $($connectionCredentials) -AcceptKey -ConnectionTimeout 90 -KeepAliveInterval 5
$returned = Invoke-SSHCommand -Command “$($sshCommand)” -SessionId $Session.SessionId
if ($Session.SessionId) { $closed = Remove-SSHSession -SessionId $Session.SessionId }
#Stop ssh Services
Stop-VMHostService -HostService (Get-VMHost “$ESXihost” | Get-VMHostService | Where { $_.Key -eq “TSM-SSH”} ) -Confirm:$false
return ($returned)
}
#Connect to the vcenter first so we can enable ssh and disable ssh
Connect-VISserver “vcenter01”
#Get a set of credentials to connect with using posh-ssh
$credentials = Get-credential -Message “Enter Credentials to connect to host” -UserName “root”
$retunedSSH = Get-SSHResult -connectionCredentials $credentials -EsxiHost “esx1.local.com” -sshCommand “ls -al”
Write-Host “$($retunedSSH.output)”
[/pre]
It is lines 3 and 4 where I am hoping for the results to be added to fail with the following error:
Get-SSHResult : The term ‘Get-SSHResult’ is not recognized as the name of a cmdlet, function, script file, or operable program
Does anyone know the correct way in which I should be sending the resulting data into my variables?
Many thanks in advance.