2016-03-01 37 views
0

所以我有一個PowerShell的問題,似乎應該很容易解決,但我無法自己搞清楚。在Powershell中確定自定義對象的範圍

就拿下面的程序:

$MyFavoriteAnimals = @() 
$Pets = "Cat","Dog","Fish","Bird" 
$Names = "Jeb","Rex","Sam","Roger" 

For ($i=0; $i -lt 4; $i++) 
{ 
    $NewAnimal = @{"Kind" = $Pets[$i]; "Name" = $Names[$i]} 
    $MyFavoriteAnimals += New-Object pscustomobject -Property $NewAnimal 
} 
$MyFavoriteAnimals | FT Kind, Name -AutoSize 

這工作得很好,並具有以下的輸出:

Kind Name 
---- ---- 
Cat Jeb 
Dog Rex 
Fish Sam 
Bird Roger 

...但如果我嘗試把這個變成一個功能和範圍$ MyFavoriteAnimals作爲全局New-Object命令停止工作:

Function My-Favorite-Animals { 

    $Global:MyFavoriteAnimals = @() 

    $Pets = "Cat","Dog","Fish","Bird" 
    $Names = "Jeb","Rex","Sam","Roger" 

    For ($i=0; $i -lt 4; $i++) 
    { 
     $NewAnimal = @{"Kind" = $Pets[$i]; "Name" = $Names[$i]} 
     $MyFavoriteAnimals += New-Object pscustomobject -Property $NewAnimal 
    } 

} 

My-Favorite-Animals 
$MyFavoriteAnimals | FT Kind, Name -AutoSize 

...我得到了fol降脂錯誤:

Method invocation failed because [System.Management.Automation.PSObject]  does not contain a method named 'op_Addition'. 
At line:13 char:9 
+   $MyFavoriteAnimals += New-Object pscustomobject -Property $NewAnimal 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidOperation: (op_Addition:String) [], RuntimeException 
+ FullyQualifiedErrorId : MethodNotFound 

回答

1

指定:** $全球:** MyFavoriteAnimals + =,如:

Function My-Favorite-Animals { 

    $Global:MyFavoriteAnimals = @() 

    $Pets = "Cat","Dog","Fish","Bird" 
    $Names = "Jeb","Rex","Sam","Roger" 

    For ($i=0; $i -lt 4; $i++) 
    { 
     $NewAnimal = @{"Kind" = $Pets[$i]; "Name" = $Names[$i]} 
     $Global:MyFavoriteAnimals += New-Object pscustomobject -Property $NewAnimal 
    } 

} 

My-Favorite-Animals 
$MyFavoriteAnimals | FT Kind, Name -AutoSize 
+0

謝謝!這樣可行! – TroggleDorf