2016-10-11 47 views
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! 

函數調用完全跳過。怎麼樣?

+0

一個平常的PowerShell陷阱的。您對GetAWServer的調用不應該有括號=> GetAWServer $ server $ awsCreds。 –

回答

0

在PowerShell中,參數參數由空格分隔,而不是由逗號分隔。

調用該函數是,要麼正確的方法:

GetAWSServer $server $awsCreds 

或(使用命名參數):

GetAWSServer -myServer $server -myCreds $AwsCreds