0
#Calls to this function magically disappear
Function GetAWSServer([string]$myServer, [Amazon.Runtime.SessionAWSCredentials]$myCreds)
{
Write-Output "GetAWSServer"
$appFilter = '*'+$myServer+'*'
$filter = New-Object Amazon.EC2.Model.Filter
$filter.Name = 'tag:Name'
$filter.Value = $appFilter
Write-Output "Filter: " $filter
try
{
$myInstance = (Get-EC2Instance -Credential $myCreds -Region ap-southeast-2 -Filter $filter) | Select -ExpandProperty Instances
} catch { $error[0] }
return $myInstance
}
這個功能看起來很合理吧?那麼,當它被調用時,沒有錯誤,但絕對沒有任何反應。這是一個示例調用。PowerShell:函數調用消失?
Write-Output "Checking if $server exists and is awake ..."
##### FIXME: Seriously, wtf?! Program doesn't seem to access the function
$instance
try
{
$instance = GetAWSServer($server, $awsCreds)
} catch {$error[0]}
$wasAwake = $true
if(-Not $instance.InstanceId)
{
Write-Output "Failure!"
$jobStatus = "Failure"
$jobOutput = "Server $server does not exist in the AWS workspace.`n `n"
continue
} else
{
#$wasAwake = WaitForAWSServer($instance, $awsCreds)
if(-Not $wasAwake) { Write-Output $i.ServerInstalled + " was woken up" }
}
輸出:
Checking if pawshrp4001 exists and is awake ...
Failure!
函數調用完全跳過。怎麼樣?
一個平常的PowerShell陷阱的。您對GetAWServer的調用不應該有括號=> GetAWServer $ server $ awsCreds。 –