2016-10-11 12 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

一つ。 GetAWServerへの呼び出しには、括弧=> GetAWServer $ server $ awsCredsを使用しないでください。 –

答えて

0

PowerShellでは、パラメータの引数はコンマではなく空白で区切ります。

その関数を呼び出す正しい方法は、いずれか、次のようになります。

GetAWSServer $server $awsCreds 

または(名前付きパラメータを使用して):通常のPowerShellの落とし穴の

GetAWSServer -myServer $server -myCreds $AwsCreds 
関連する問題